一个问题请帮忙看看,实在感觉不对!
//一个简单的测试,没有想到的结果
#include <iostream>
using namespace std;
class A
{ public:
A(int sz=0) { size=sz;}
A& create();
void Size()
{
cout < <size < <endl;
}
private:
int size;
};
A& A::create()
{
A w(size);
return w;
}
int main()
{
A x(8);
x.create().Size(); //结果是-858993460,我还认为是8,如果程序中用此值 "new(size) "的话,马上内存就会爆的。
}
[解决办法]
由此可见你的答案是正确的,create函数返回的是局部变量w的引用,函数结束后w被销毁,所以size值是不确定的
[解决办法]
Effective C++(第二版)条款31:千万不要传回函数内local对象的reference