以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  很疑惑 !  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=15655)


--  作者:viaphone
--  发布时间:3/15/2005 11:36:00 PM

--  很疑惑 !
以下是我用VC写的一个Consol 测试代码 :
class test{
public:
 int i;
 test(){
  i =0;
 };
 ~test (){
  cout << "destoried\n";
 };

 test& clone(){ //返回引用
  test t ;
  t.i =10;
  return t; //t在这之后应该被销毁吗 ?
 };
};

test& getTest(){//返回引用
 test t;
 return t; //t在这之后被销毁
};

int main(int argc, char* argv[])
{
   test& t1=getTest();
   int j = t1.i ; //t1所指对象已经被销毁,j得到的值为随机
   
   test t2 ;
   test& t3 =t2.clone ();
   j=t3.i ;//我的疑惑在这里,为何t3所指的对象没有被销毁 ?
   return 0;
};


--  作者:yzh
--  发布时间:4/27/2005 5:07:00 PM

--  
老兄,你这个问题在Borland C++ 版本是5.0下不能编译
错误信息如下

Info :Compiling C:\bc5\bin\example.cpp
Error:example.cpp(11,8):Attempting to return a reference to local variable 't'
Error:example.cpp(17,16):Attempting to return a reference to local variable 't'
Error:example.cpp(11,29):Attempting to return a reference to local variable 't'
Warn :example.cpp(29,5):Parameter 'argc' is never used
Warn :example.cpp(29,5):Parameter 'argv' is never used


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms