首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个有关问题请帮忙看看,实在感觉不对

2012-03-09 
一个问题请帮忙看看,实在感觉不对!//一个简单的测试,没有想到的结果#includeiostreamusingnamespacestd

一个问题请帮忙看看,实在感觉不对!
//一个简单的测试,没有想到的结果
#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

热点排行