首頁 >後端開發 >C++ >如何在衍生類別建構函式中正確初始化基底類別成員變數?

如何在衍生類別建構函式中正確初始化基底類別成員變數?

Linda Hamilton
Linda Hamilton原創
2024-12-05 01:14:10688瀏覽

How to Correctly Initialize Base Class Member Variables in a Derived Class Constructor?

如何在衍生類別建構子中初始化基底類別成員變數

在物件導向程式設計中,常見的是繼承自基底類別。在衍生類別中建立建構函式時,正確初始化從基底類別繼承的成員變數非常重要。

請考慮以下程式碼:

class A {
public:
    int a, b;
};

class B : public A {
    B() : A(), a(0), b(0) {
    }
};

在此範例中,衍生類別 B嘗試在其自己的建構函式中初始化成員變數 a 和 b。然而,這是一個不正確的做法。在衍生類別中初始化基底類別成員變數的正確方法是使用基底類別的建構子:

class A {
protected:
    A(int a, int b) : a(a), b(b) {} // Accessible to derived classes
private:
    int a, b; // Keep these variables private in A
};

class B : public A {
public:
    B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0.
    {
    }
};

透過使基底類別建構子可存取(受保護或公用)並在衍生類別的建構函數中呼叫它,我們正確初始化繼承的成員變數。這種方法確保在衍生類別程式碼執行之前正確初始化基底類別。

請注意,不建議在衍生類別中將基類成員變數設為公用(如錯誤範例所示),因為這會破壞封裝原則,允許外部存取受保護或私人資料。

以上是如何在衍生類別建構函式中正確初始化基底類別成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn