C++构造函数中的混淆

che*_*ong 4 c++ oop constructor class object

#include <iostream>
using namespace std;

class Obj {
public:
    Obj(){cout <<"create obj" << endl;}
    Obj(const Obj& other){cout<<"copy create obj"<<endl;}
    ~Obj(){cout<<"destructed obj"<<endl;}
};

int main() {
    Obj(Obj((Obj())));
    cout<<"---- exit main ----"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这个程序只打印出1个创建obj和1个被破坏的obj.救命.

gsa*_*ras 9

因为复制Elision.在这里阅读更多相关信息.您的编译器理解,它可以避免复制对象,只创建一个对象.