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

时间:2016-08-30 18:05:27

标签: c++ class oop friend

考虑以下计划:

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&amp; F(CLS);

功能吗?

1 个答案:

答案 0 :(得分:3)

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