Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1699737
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: C/C++

2007-03-07 17:16:28

条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用

先看第一种情况: 返回一个局部对象的引用.
局部对象是在被定义时创建,在离开生命空间时被销毁的。局部对象的生命空间,是指它们所在的函数体。
当函数返回时,程序的控制离开了这个空间,所以函数内部所有的局部对象被自动销毁。因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了。
至于第二种情况: 返回new创建的指针.
函数调用者很难不忘delete该对象.内存泄露也就很难避免.


条款23: 必须返回一个对象时不要试图返回一个引用
完全追求纯粹的“传引用”的过程中,会不可避免地犯另一个严重的错误:传递一个并不存在的对象的引用。



阅读(905) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~