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

标签 c++ reference constants

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

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/

相关文章:

c++ - 值初始化c++

c++ - 无法让我的递归函数正确计算字符串中的字母 (c++)

php - __METHOD__ 和 __FUNCTION__

C++ 全局初始化顺序忽略依赖关系?

c++ - 如何从标识符创建类?

c++ - 传递常量引用...它是否像最重要的常量一样工作?

c++ - 当派生对象绑定(bind)到基类引用时复制/移动/转换语义?

java - java中的引用相等是否意味着字符串的结构相等?

javascript - JS const 变量如何编译成浏览器友好的代码,使其只读?

c++ - 如何检测实例是否是来自成员函数的 const?