我试图理解C ++中复制构造函数的概念。我写了以下程序:
Constructor
Copy Constructor
Constructor
20
Destructor
Destructor
Destructor
该程序的输出如下:
main
我不明白为什么没有为operator+
函数中的第三行调用复制构造函数。我认为应该调用复制构造函数,因为drag
函数按值返回。
答案 0 :(得分:3)
编译器正在优化复制构造函数调用,因为标准明确允许“删除”该复制。这样的副本有什么意义呢,真的吗?
你是完全正确的,因为它是一个机会,用于调用复制构造函数,编译器可以执行它。实际上,该标准确实要求在此处调用复制构造函数。