[英]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 = x
和int const &r = x
之间没有区别。
您尝试做的事是不可能的。 声明包括:
int
和const
。 在大多数情况下, 东方电气,说明符的DECL说明符-NGF的次序是不重要的。 x
或&r = x
。 通过分别将每个 init-declarator与每个 decl-specifier组合来解释该声明。 因此,在单个声明中声明的所有实体都具有一个公共的decl-specifier-seq 。 由于const
是decl-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;
在单个语句上,因为int
和const int
与编译器的类型不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.