C++ c++;oop程序没有';我不能给出预期的结果

C++ c++;oop程序没有';我不能给出预期的结果,c++,class,oop,friend,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; } cls类 { in

考虑以下程序:

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;
}
cls类
{
int vi;
公众:
cls(整数v=37)
{
vi=v;
} 
友邦国际餐饮(cls);
};
内部和外部(cls c)
{
返回c.vi;
}
int main()
{
常数cls d(15);
f(d)=8;

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

@gsamaras我将其编辑得更具体一些。