我对这两个感到困惑。我知道C ++引用本身就是常量,一旦设置它们就无法更改为引用别的东西。
答案 0 :(得分:9)
const int&
表示对const int
的引用。 (同样,int&
表示对非const int
的引用。)
int& const
字面意思是const引用(对于非const int
),这在C ++中是无效的,因为引用本身不能是const限定的。
除了cv限定符之外,Cv限定的引用是不正确的 是通过使用typedef-name([dcl.typedef], [temp.param])或decltype-specifier([dcl.type.simple]),在这种情况下 cv限定符被忽略。
正如你所说,引用本质上是不变的,一旦设置它们就不能被改为引用别的东西。 (我们不能在初始化后重新引用引用。)这意味着引用始终是“const”,那么const限定引用或const不合格引用实际上可能没有意义。
答案 1 :(得分:3)
const
限定符意味着您无法更改引用的值。例如:
void foo(int& arg) {
arg = 1; // OK. The value passed by a caller will be changed in-place.
}
void foo(const int& arg) {
arg = 1; // Compilation error.
}
int& const jj
是编译错误。
答案 2 :(得分:3)
差异:
const int& jj// means a reference to const int.
int& const jj // ill formed code that should trigger a compiler error