c++ oop程序没有给出预期的结果

c++ oop program doesn't give expected result

本文关键字:结果 oop 程序 c++      更新时间:2023-10-16

考虑下面这段程序:

class cls
{
   int vi;
public:
    cls(int v=37)
    {
        vi=v;
    } 
    friend int& f(cls);
};
int& f(cls c)
{
    return c.vi;
}
int main()
{
    const cls d(15);
    f(d)=8;
    cout<<f(d);
    return 0;
}

当我运行它时,输出是

15

但是我不明白为什么是15,因为我认为它应该输出8,因为

f (d) = 8

函数,根据我的理解,它使c.vi=8,但我可能错了,函数可能完全做了其他事情,然后我问,目的是什么,或者

朋友int&f (cls);

函数做了什么?

您的程序有未定义行为-您正在返回对函数局部变量的悬空引用(参数也是局部变量)。