【发布时间】:2012-12-18 17:21:27
【问题描述】:
我很难理解为什么在下面的代码中没有调用复制构造函数。
#include <iostream>
class Test
{
public:
Test(int){std::cout << "Test()" << std::endl;}
Test(const Test&){std::cout << "Test(const Test&)" << std::endl;}
};
int main()
{
// Test test;
Test test2(Test(3));
return 0;
}
谁能解释为什么只调用构造函数而没有复制构造函数?
谢谢。
【问题讨论】:
-
因为编译器很棒。无论如何,en.wikipedia.org/wiki/Copy_elision
-
我很高兴除了标记为重复的问题之外,这个问题仍然存在。作为一个不熟悉复制省略的人,对我来说,另一个问题是否涵盖此处显示的情况并不明显。
标签: c++