了解临时对象的来源

C++中真正所谓的临时对象是不可见的--不会在源代码中出现。

发生于两种情况:1、隐式类型转换;2、当函数返回对象的时候;

只有当对象以by value 方式传递,或是当对象被传递给一个reference to const 参数时,这些转换才会发生。如果对象被传递给一个reference to non const参数,并不会发生此类转换。

C++禁止为non-const-reference参数产生临时对象。

返回值优化:

让编译器消除临时对象的成本。让函数返回所谓的constructor arguments以取代对象。

const Rational operator*( constr Rational& lhs, const Rational& rhs)

{

return Rational( lhs.numerator()* rhs.numerator, lhs.denominator()*rhs.denominator());

}

More Effective C++----19th,20th

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值