如果問題是重複,請原諒我......我無法獲得令人滿意的答案,因此將任務發佈到我的方式....爲什麼我們不能在派生類函數中創建基類對象如果基類構造函數受保護
考慮示例代碼
class Base {
protected:
Base() {}
};
class Derived:public Base {
public:
void func() {
Base obj;
}
};
上面的代碼將thow編譯錯誤說法基本的構造函數是受保護的。 但是,如果我在主要的基類的構造函數中創建一個派生類對象(我知道它由派生類構造函數內部調用),這意味着可以從派生類函數調用基類構造函數。 那麼爲什麼我們無法在派生類函數內創建一個Base類對象...?
還有一件事....是否有任何其他方式來實例化一個類的對象,它的構造函數在protected中,除了在同一個類的方法內部(就像我們在創建Singleton時一樣)...?
那麼是否有其他方法來實例化一個類的對象,該類的構造函數在protected中,而不是基類的靜態公共方法(即創建Singleton) –