C ++引用类成员但不更改值

周杰伦

请帮助我查看以下代码。

我想知道为什么变量“ 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返回一个引用,但是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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过引用或值枚举C ++ 11类

来自分类Dev

在OpenGL类中更改C结构的值-目标C

来自分类Dev

在C#中将默认值设置为成员类

来自分类Dev

C ++类成员存储

来自分类Dev

C ++中静态指针类成员的链接期间未定义的引用

来自分类Dev

C ++索引类成员

来自分类Dev

C ++成员在父子构造函数之间更改值

来自分类Dev

如何使用C ++ Lambda捕获类的某些(但不是全部)成员变量

来自分类Dev

C ++对类数据成员的引用

来自分类Dev

基类静态引用数据成员上C ++对象切片行为的奇怪案例

来自分类Dev

const和非const引用成员的C ++类重写

来自分类Dev

C ++从其他函数分配类成员的值

来自分类Dev

C ++对动态创建的类成员的功能的未定义引用

来自分类Dev

C ++结构/类成员

来自分类Dev

C#类实例保存字符串引用但不包含对象引用

来自分类Dev

在OpenGL的类中更改C结构的值-目标C

来自分类Dev

类c ++中的静态成员未定义引用

来自分类Dev

能够在C中更改const的值,但不能在C ++中更改

来自分类Dev

C ++类引用

来自分类Dev

C ++类循环引用?

来自分类Dev

在C ++中,您可以让类成员成为传入的引用吗?

来自分类Dev

C ++中对类成员的“未定义”引用

来自分类Dev

C ++索引类成员

来自分类Dev

C ++中类成员的默认值

来自分类Dev

c ++:类实例的向量,按类成员值搜索失败

来自分类Dev

在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

来自分类Dev

C ++模板类更改静态成员的值

来自分类Dev

在构造函数中使用类成员时的C ++未定义引用

来自分类Dev

C++ 类成员指针与简单值内存管理