C ++构造函数中的混淆

时间:2017-10-20 06:02:52

标签: c++ class oop object constructor

#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;
}

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

1 个答案:

答案 0 :(得分:9)

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