簡體   English   中英

用delete重載復制構造函數,然后在C ++中調用子類的默認構造函數

[英]Overloading copy constructor with delete and then calling the default constructor of a subclass in C++

我試圖通過行Card(const Card&) = delete;來禁用或更確切地說刪除父類Card的副本構造Card(const Card&) = delete;

當我調用Quartz* qu = new Quartz(); 在主要我得到默認構造函數被刪除的錯誤? 我發現這很令人困惑,因為我不認為我在Card中定義了默認構造函數,而是在復制構造函數中重載了。 任何解釋或解決方法對此表示贊賞。

class Card {
public:

    Card(const Card&) = delete;

};

class Quartz : public Card {
public:
    Quartz() = default;


};

int main() {

    Quartz* qu = new Quartz();
}

如果類沒有其他構造函數,則僅隱式定義默認構造函數。 由於定義了副本構造函數,因此現在還需要顯式定義默認構造函數。

暫無
暫無

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

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