copy构造隐藏的陷阱

 copy构造


当你看到赋值符号时要小心,因为"="语法也可用来调用copy构造函数。
例如:   Widget w3 = w2;   //调用copy构造函数!!
copy构造函数是一个尤其重要的函数,因为它定义一个对象如何passed by value(以值传递)。
举个例子,考虑一下代码:
bool hasAcceptableQuality(Widget w);
...
Widget aWidget;
if ( hasAcceptableQuality(aWidget) )
...


 分解hasAcceptableQuality(aWidget)这个语句如下:
Widget w = aWidget;
hasAcceptableQuality(w)

参数w是以by value 方式传递给hasAcceptableQuality。在上述调用中Widget被复制到w体内,这个复制动作由Widget的copy构造函数完成。

 


总结:函数中的Pass-by-value意味”调用copy构造函数“。

以by value 传递用户自定义类型通常是个坏主意,Pass-by-reference-to-const(引用传递)往往是比较好的选择。

转载请注明,文章来自:http://blog.youkuaiyun.com/windows_nt

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值