C 参考class对象的返回 - 为什么不工作

C++ reference return of class object- why not working?

本文关键字:为什么不 工作 返回 参考 class 对象      更新时间:2023-10-16

如果我使用以下代码,那么为什么在以下两种情况下ouput相同:

class Test  
{  
    public:  
    int data;
    Test() { data = 9; }
    Test& myfunction ();
    void print() { cout << data<<endl; }
};  
Test m;
Test& Test::myfunction ()
{
    return m;
};    

int main()
{   
    Test b;
    Test a;
    b=a.myfunction();
    b.print();
    m.data=7;
    b.print();
    return 0;
}

在上面的代码中,为什么" b.print()"即使在我更改了'm'的'数据'...?
之后,在屏幕上输出相同的数据'B'是对" M"的引用。因此,如果我更改" m"的"数据"的值," b"的"数据"值也应自动更改...

以上代码的输出是:
9
9//为什么不7?

,如果您写

,您将获得相同的结果
Test a;
Test &b = a.myfunction();

至于您的代码

Test b;
Test a;
b=a.myfunction();

然后b是一个单独的对象,已分配了m的副本。因此,任何M的更改都不会影响b。b未定义为参考。