1. 返回const对象的引用:返回引用不会调用复制构造函数,效率更高;引用指向的对象应在调用函数执行时存在,不能是函数中的局部变量;当参数都为const,函数返回其一的时候,必须也为const;
2. 非const对象的引用:
两种常见情况:重载赋值运算符:使其可以连续赋值(s1=s2=s3);
重载<<:使其可以串接输出(cout<<s1<<"!\n"),这里必须返回引用,因为ostream类没有复制构造函数。
3. 返回对象:返回的对象是被调用函数中的局部变量,例如被重载的算术运算符。
Vector Vector::operator+(const Vector &b) const { return Vector(x+b.x, y+b.y); }依次调用构造函数创建对象,以及return调用复制构造函数创建一个调用程序能访问的对象。
4. 返回const对象:使得返回的对象不能再被赋值修改