如何在单个定义中定义多个声明符中的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
问题:
const int &r = x and
int const &r = x
似乎没有区别。
2)如何像4)和5) const int &r = x
和int const &r = x
之间没有差异。
你想做的是不可能的。一个声明包含:
- A decl- specier -seq,是decl- specier 的序列,如
int
、const
。在大多数情况下,decl- specific -seq中decl-specifiers的顺序无关紧要。 - 一个init-declarator-list,是一个init-declarator 的列表。初始化声明器可以是
x
或&r = x
。
通过单独组合eachinit-declarator和everydecl-specifier来解释声明。因此,在单个声明中声明的所有实体都有一个共同的decl- specific -seq。由于const
是decl说明符而不是声明符的一部分,因此不能将其仅应用于声明中的一个声明符。
再问(1),
”
const int &r = x and int const &r = x
它们是一样的。
问题是const
在语法上属于类型或直接在其左侧的*
或函数头(对于形式函数参数类型递归地相同),除了声明的基本类型可以写const T
而不是T const
的特殊规则。因此,逗号后面的const
在语法上是自由的,没有连接到任何东西。而且没有办法接"当前类型"或引入一些新的基本类型。
那么,重新回答问题(2),
”如何使用单个定义与其他int声明符一起编写const引用,如[在同一声明中有多个声明符的示例]?
你没有。
就像你不能在一条语句中声明两种不同的类型,例如
int x, float y;
不能声明:
int x, const int y;
因为int
和const int
对编译器来说是不同的类型。 相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 自定义引用类型
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从