c++ 引用 class 成员但不更改值

c++ reference to a class member but not changing value

请帮我查看以下代码。

我想知道为什么变量“b”不是修改后的值

我无法使用引用更改值?

谢谢!

#include <iostream>

using namespace std;

class Foo{
    public:
        int a = 1;
        int& check(){
            return a;
        };
};

int main()
{
    int b;
    Foo foo;
    
    b = foo.check();
    cout << b << endl;
    
    foo.check() = 2;
    cout << foo.a << endl;
    cout << b << endl;

    return 0;
}

输出为

1
2
1

正如@Igor Tandetnik 指出的那样,foo.check returns 一个引用,但是 b 是一个 int,而不是对 int 的引用,所以它保持原始值。

你想要的可以通过...实现

#include <iostream>

using namespace std;

class Foo
{
public:
    int a = 1;
    int &check()
    {
        return a;
    };
};

int main()
{
    Foo foo;
    int &b { foo.check() };

    cout << b << endl;

    foo.check() = 2;
    cout << foo.a << endl;
    cout << b << endl;

    return 0;
}