在C ++中理解复制构造函数

时间:2015-05-27 16:23:19

标签: c++ operator-overloading copy-constructor

我试图理解C ++中复制构造函数的概念。我写了以下程序:

Constructor
Copy Constructor
Constructor
20
Destructor
Destructor
Destructor

该程序的输出如下:

main

我不明白为什么没有为operator+函数中的第三行调用复制构造函数。我认为应该调用复制构造函数,因为drag函数按值返回。

1 个答案:

答案 0 :(得分:3)

编译器正在优化复制构造函数调用,因为标准明确允许“删除”该复制。这样的副本有什么意义呢,真的吗?

你是完全正确的,因为它是一个机会,用于调用复制构造函数,编译器可以执行它。实际上,该标准确实要求在此处调用复制构造函数。