1、当一个变量是函数内部存在的,这个变量被称为本地变量,并且该函数要返回这个内部的变量,你就要以值传递的方式返回此值。因为如果以指针或者引用返回此值,这个值会在函数结束运行以后消失,那么这个引用或者指针就会悬空;
2、哪怕一个函数操作的是外部传进来的引用或者指针,只要你返回的不再是那个引用或者指针,而是由这个引用或者指针加工出来的东西的时候,这种情况就转换成1的情况了,所以还是按照1来处理;
3、当一个类中没有公有的COPY构造函数时,它应当返回引用。这是为啥?你要知道COPY构造函数接收的是一个同类型的对象返回的也是一个同类型的对象。因为它不是公有的这就决定你在初始化对象的时候就不能用该类对象作为右值,因此该类的对象必然是用来处理其他类型的对象的,或者其他的类型变量,所以这些处理过程必须集中于一个该类对象的身上,假设你返回的不是引用而是值,那就会形成很多分COPY,你最终可能会达到目的,但是你使用的必然是最后一个COPY,在它之前还有许多COPY充当了中间环节,并且每一个COPY都是前一个COPY的叠加,这个是完全没有必要的。因为返回值是值而不是引用,系统花费在创建COPY这一块的资源是相当多的;
4、对于那些只对参数进行进一步加工但是维持该参数原有地址不变的函数可以返回引用或指针。