C++中如何返回指向非const对象的引用

C++中如何返回指向非const对象的引用

两种常见的返回非 const对象情形是,重载赋值运算符以及重载与 cout 一起使用的<<运算符。前者这样做旨在提高效率,而后者必须这样做。

operator=() 的返回值用于连续赋值:

String sl("Good stuff");
String s2,s3;
s3=s2= s1;

在上述代码中,s2.operator=()的返回值被赋给 s3。为此,返回 String 对象或 String 对象的引用都是可行的,但与 Vector 示例中一样,通过使用引用,可避免该函数调用 String 的复制构造函数来创建一个新的String对象。在这个例子中,返回类型不是 const,因为方法 operator-()返回一个指向 s2的引用,可以对其进行修改。参见【0voice C++】
Operator<<() 的返回值用于串接输出:

String s1("Good stuff");
cout << s1 <<"is coming!";

在上述代码中,operator<<(cout, s1) 的返回值成为一个用于显示字符串“is coming!”的对象。返回类型必须是 ostream&,而不能仅仅是ostream。如果使用返回类型ostream,将要求调用 ostream 类的复制构造函数,而 ostream 没有公有的复制构造函数。幸运的是,返回一个指向cout 的引用不会带来任何问题,因为cout 已经在调用函数的作用域内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值