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中执行操作。我认为这会违反“似乎”规则,但我看到有特殊的例外情况。我想,问题是“为什么我们仍然需要具有复制省略的复制构造函数?”-“仅仅因为你的程序没有实际调用复制构造函数,并不意味着可以忽略它。”()和-“在某些情况下,优化实际上不会起作用。”()