条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
先看第一种情况: 返回一个局部对象的引用.
局部对象是在被定义时创建,在离开生命空间时被销毁的。局部对象的生命空间,是指它们所在的函数体。
当函数返回时,程序的控制离开了这个空间,所以函数内部所有的局部对象被自动销毁。因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了。
至于第二种情况: 返回new创建的指针.
函数调用者很难不忘delete该对象.内存泄露也就很难避免.
条款23: 必须返回一个对象时不要试图返回一个引用
完全追求纯粹的“传引用”的过程中,会不可避免地犯另一个严重的错误:传递一个并不存在的对象的引用。
阅读(913) | 评论(0) | 转发(0) |