【发布时间】:2012-04-25 12:26:53
【问题描述】:
struct A {
int &r;
A (int &i) : r(i) {}
void foo () const {
r = 5; // <--- ok
}
};
编译器不会在r = 5; 处生成任何错误。
这是否意味着 &r 已经 const-correct 是一个参考(int* const 的逻辑等价物)? [这里有一个related 问题。]
【问题讨论】:
-
我会因为 const 正确性适用于
*this而不是成员,所以您只修改了引用的对象而不是引用本身。正如您所指出的,类似于指针大小写。 -
@贾斯汀:是的。该构造函数应该是 A(int&i)。
-
...更像是内置的 const-incorrectness,但这取决于您问谁...
-
@Justin,编辑感谢您的指出。
-
@iammilind:请记住,就 C++ 而言,
const-正确性是在位级别评估的,并不关心语义。
标签: c++ reference const-correctness class-members