繁体   English   中英

C ++如何在单个定义中的多个声明符中定义const引用?

[英]C++ How to define const reference in a multiple declarator in a single definition?

基本形式:

1. int x = 1, &r = x; -> good    
2. int x = 1;    
   const int &r = x; -> good
3. int x = 1;
   int const &r = x; -> good
4. int x, const int &r = x; -> failed
5. int x, const &r = x; -> failed

问题:
1)之间的区别是:

const int &r = x and
int const &r = x

似乎没有区别。

2)如何使用4)和5)中的单个定义将const引用与其他int声明符一起编写

const int &r = xint const &r = x之间没有区别。

您尝试做的事是不可能的。 声明包括:

  1. decl-specifier-seq,它是decl-specifier的序列,例如intconst 在大多数情况下, 东方电气,说明符DECL说明符-NGF的次序是不重要的。
  2. 一个init-declarator-list,它(毫不奇怪)是init-declarator的列表。 初始化声明器可以是x&r = x

通过分别将每个 init-declarator每个 decl-specifier组合来解释该声明。 因此,在单个声明中声明的所有实体都具有一个公共的decl-specifier-seq 由于constdecl-specifier而不是声明符的一部分,因此您不能让它仅适用于声明中的其中一个声明

问题(1),

之间的区别是:

 const int &r = x and int const &r = x 

他们是一样的。

问题在于const语法上直接位于其左侧的类型或*或函数头(递归方式与形式函数参数类型相同),除了特殊规则外,对于声明的基本类型,您可以编写const T而不是T const 因此,逗号后的const在语法上是自由的,没有连接任何东西。 而且没有办法选择“当前类型”或引入一些新的基本类型。

因此,问题(2),

如何像[示例中在同一声明中有多个声明符的示例]中那样使用单一定义将const引用与其他int声明符一起编写?

你不知道

就像您无法在一个语句中声明两种不同的类型一样,例如

int x, float y;

您不能声明:

int x, const int y;

在单个语句上,因为intconst int与编译器的类型不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM