gpt4 book ai didi

c++ - 从 C++ 中的 const 成员函数修改引用成员

转载 作者:行者123 更新时间:2023-12-03 06:52:23 25 4
gpt4 key购买 nike

我正在研究我的代码的常量正确性,只是想知道为什么这段代码会编译:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com