我正在研究我的代码的常量正确性,只是想知道为什么这段代码会编译:
class X
{
int x;
int& y;
public:
X(int& _y):y(_y)
{
}
void f(int& newY) const
{
//x = 3; would not work, that's fine
y = newY; //does compile. Why?
}
};
int main(int argc, char **argv)
{
int i1=0, i2=0;
X myX(i1);
myX.f(i2);
...
}
据我了解,f() 正在改变对象 myX,尽管它说是 const。当我分配给 y 时,如何确保我的编译器提示? (Visual C++ 2008)
非常感谢!
最佳答案
因为您没有更改 X
中的任何变量.其实你在变_y
这是您类(class)的局外人。不要忘记:
y = newY;
正在分配
newY
的值指向 y
指向的变量,但不是他们自己的引用。仅在初始化时才考虑引用。
关于c++ - 从 C++ 中的 const 成员函数修改引用成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64011378/