簡體   English   中英

C ++構造函數中的混淆

[英]Confusion in C++ 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。 救命。

因為復制Elision。 在這里閱讀更多相關信息。 您的編譯器理解,它可以避免復制對象,只創建一個對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM