根据dcl.ref/1:
除了cv限定符之外,Cv限定的引用是不正确的 是通过使用typedef-name
引入的
所以我试过了:
int a = 1;
int& const r1 = a;
得到了错误:
error: 'const' qualifiers cannot be applied to 'int&'
预计会提示诊断消息。
但是,我想知道为什么被禁止。
只是为了防止程序员实际意味着写上面代码的意外:
const int& r1 = a; // const reference to int
主要问题
2)还是有一些更深层次的理由/实际例子,为什么不允许它确实有益?
有什么想法吗?
答案 0 :(得分:5)
CV-qualifiers对指针有效:
int a;
int * const p = &a;
这适用于指针本身,而不是它指向的内容。
但由于您无法在定义后更改引用,因此将CV-Q添加到引用中是没有意义的。