1.返回指向const对象的引用
class Node
{
//...
};
const Node &fun(const Node &obj)
{
return obj;
}
则可以这样使用该函数:
Node obj();
Node res = fun(obj); //res的地址与obj的不同,其中任一个变量值的改变不会影响另一个变量
或
const Node &res = fun(obj); //必须是const &,而不是&,要与返回类型相同,此时res和obj的地址相同,其中一个改变会影响另一个
2.返回指向非const对象的引用
主要是为了防止在返回是调用复制构造函数返回一个副本,比如 return a; 会复制一个a的副本返回出去
3.返回const对象
为了返回的临时对象被修改,使用返回const对象
如:
obj1 + obj2 = net;
对于operator+操作符,如果返回的是非const对象,结果是net被赋给 obj1与obj2和的临时对象,如果采用返回const对象则可提示这种错误
使:obj1 + obj2 = net报错;
但 net = obj1 + obj2;仍然成立