请你在下面的表达式中解释第二个“const”的含义:
int i = 42;
const int &const ri = i;
有些情况下const T& const是强制性的吗?
到目前为止我所理解的: 指针是对象,可以重新分配。
int i = 42;
const int *ptr1 = &i; // valid: (low-level const): *ptr1 cannot be changed.
int *const ptr2 = &i; // valid: (high-level const): ptr2 cannot be changed.
const int *const ptr3 = &i: // also valid (combination of 2 precedent lines).
引用,unliked指针不是对象(它们没有地址),不能重新分配==>没有意义的“高级常数”
int i = 42;
int &ri1 = i; // valid: ri1 is a new name for i
const int &ri2 = 7; // valid and const is required
const int &ri3 = i; // valid, what is the use of const?
const int &const ri4 = i; // valid, has the second const an importance?
答案 0 :(得分:2)
表格int & const
格式不正确(C ++11§8.3.2):
在声明T D中,其中D具有任何一种形式
& attribute-specifier-seqopt D1 && attribute-specifier-seqopt D1
并且声明T D1中的标识符的类型是“derived-declarator-type-list T”,然后D的标识符的类型是“T的derived-declarator-type-list reference”。 attribute-specifier-seq属于引用类型。 Cv限定的引用是不正确的,除非通过使用typedef(7.1.3)或模板类型参数(14.3)引入cv限定符,在这种情况下cv-预选赛 被忽略了。
所以不,它不能强制到任何地方。它没有语义。