簡體   English   中英

你可以調用基類的構造函數來創建派生對象嗎?

[英]Can you call a constructor for a base class to create a derived object?

class class1 {
public:
    class1(int x);

};

class class2 : public class1 {
};

我可不可以做:

class2 my_class2(10);

或者我是否必須為class2再次定義構造函數(即使它完全相同)?

由於C ++ 11構造函數可以繼承:

class class2 : public class1 {
public:
    using class1::class1;
};

否則你必須做以下事情:

class class2 : public class1 {
public:
    class2(int x): class1(x) {}
};

在構造派生類的對象時,無論如何都必須調用基類的構造函數。

從C ++ 17開始,您可以通過聚合初始化直接調用公共基類構造函數 - 而無需向類添加任何代碼:

class2 my_class2{2}; // Note the curly braces!

暫無
暫無

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

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