C++ oop 程序没有给出预期的结果
c++ oop program doesn't give expected result
考虑以下程序:
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,但我可能错了,该函数可能完全做了其他事情,所以我问,目的是什么或
friend int& f(cls);
功能呢?
您的程序存在未定义行为 - 您正在返回对函数局部变量的悬空引用(参数也是局部变量)。
考虑以下程序:
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,但我可能错了,该函数可能完全做了其他事情,所以我问,目的是什么或
friend int& f(cls);
功能呢?
您的程序存在未定义行为 - 您正在返回对函数局部变量的悬空引用(参数也是局部变量)。