
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
当你看到赋值符号时要小心,因为"="语法也可用来调用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(引用传递)往往是比较好的选择。
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!