1.返回指向const对象的引用
返回对象将调用复制构造函数,但是返回引用不会,返回引用的效率更高。
引用指向的对象在应在调用函数执行时存在。
2.返回指向非const对象的引用
常用于重载赋值运算符、以及重载与cout一起使用的<<运算符。
3.返回对象
被返回的对象是调用函数中的局部变量,常用于被重载的算术运算符号。
4.返回非const对象
可以避免误用和滥用。
总之,如果方法或函数要返回局部对象,应该返回对象,而不是指向对象的引用。这种情况下,将使用复制构造函数来生成返回的对象;如果方法或函数要返回一个没有公有复制构造的类,如ostream类的对象,它必须返回一个指向这种对象的引用;有些方法和函数可以返回对象,也可以返回指向对象的引用,如重载的赋值运算符,应该首选引用。