美国上市公司
亿元级外企IT培训企业

400-111-8989

热门课程

copy构造隐藏的陷阱

  • 时间:2014-12-29
  • 发布:IT培训
  • 来源:资料库

当你看到赋值符号时要小心,因为"="语法也可用来调用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(引用传递)往往是比较好的选择。

上一篇:记录打印椭圆的有趣过程
下一篇:c++ vector 使用效率问题

java技术有哪些优点优势

选择城市和中心
贵州省

广西省

海南省

台湾