C++ 以下代码中调用了哪个构造函数?
请看下面的代码:C++ 以下代码中调用了哪个构造函数?,c++,C++,请看下面的代码: class Test { public: Test() { cout << "default\n"; } Test(const Test&) { cout << "copy\n"; } Test& operator = (const Test&) { cout << "assign\n";
class Test
{
public:
Test()
{
cout << "default\n";
}
Test(const Test&)
{
cout << "copy\n";
}
Test& operator = (const Test&)
{
cout << "assign\n";
return *this;
}
};
int main()
{
Test t = Test();
}
类测试
{
公众:
测试()
{
cout编译器可以自由地优化不必要的副本。这并不意味着不需要可访问的副本构造函数
您的代码显示复制初始化,这意味着复制构造函数必须可用。理论上,将调用默认和复制构造函数
不需要或不使用赋值运算符。请参阅。编译器在behindI中执行操作。我认为这会违反“似乎”规则,但我看到有特殊的例外情况。我想,问题是“为什么我们仍然需要具有复制省略的复制构造函数?”-“仅仅因为你的程序没有实际调用复制构造函数,并不意味着可以忽略它。”()和-“在某些情况下,优化实际上不会起作用。”()