首頁 > 後端開發 > C++ > 主體

子類別可以透過初始化列表初始化受保護的父成員嗎?

DDD
發布: 2024-10-25 07:57:02
原創
723 人瀏覽過

Can Child Classes Initialize Protected Parent Members Through Initialization Lists?

在子類別的初始化清單中初始化受保護的父成員

繼承具有受保護資料成員的類別時,可能需要使用子類別的初始化清單來初始化它們類別的建構函數。然而,這種方法經常會導致編譯錯誤。

在這個例子中:

<code class="cpp">class Parent {
protected:
    std::string something;
};

class Child : public Parent {
private:
    Child() : something("Hello, World!") {}
};</code>
登入後複製

編譯此程式碼將導致錯誤,因為子類Child 沒有名為Something 的成員.

要解決這個問題,父類別Parent 必須定義一個建構函式來初始化受保護的成員。這個建構子可以宣告為 protected,允許衍生類別存取它。

下面修改後的程式碼將成功編譯:

<code class="cpp">class Parent {
protected:
    std::string something;
    Parent(const std::string& something) : something(something) {}
};

class Child : public Parent {
private:
    Child() : Parent("Hello, World!") {}
};</code>
登入後複製

在這個修改後的程式碼中,父類別中的protected 建構函式轉發Something 成員的初始化參數,使子類別能夠在自己的初始化過程中初始化父類別的受保護成員。

透過遵循此語法,可以使用子類別的初始化清單來初始化受保護的父類別成員,提供跨繼承層次結構的物件初始化具有更大的控制力和靈活性。

以上是子類別可以透過初始化列表初始化受保護的父成員嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!