Item21:当你返回一个对象时,不要试图返回一个引用

芝士wa
2024.4.2
Item21链接


“无论何时只要你看到一个引用声明,你应该立刻问自己它是什么东西的另一个名字,因为它必定是某物的另一个名字”

如果函数返回一个引用,它必须返回某个已存在的对象的引用。

一个函数创建一个新对象只有两种方法:在栈上或者在堆上。

  • 栈上的生成物是局部变量,任何返回一个引向局部对象的引用的函数都是错误的。
  • 堆上的创建需要申请空间,这很容易导致内存泄漏。

此外,无论是在栈上还是在堆上创建对象并返回引用,都不能避免一次构造函数的调用。

直接返回值就好了。


“绝对不要返回一个局部栈对象 指针或引用,绝对不要返回一个堆的引用,绝对不要返回一个局部静态对象的指针或引用”

posted @ 2024-04-02 11:50  芝士wa  阅读(24)  评论(0)    收藏  举报