如何在C 中使用基類的構造函數和賦值運算符
從基類繼承並打算覆蓋特定的特定情況時會出現常見情況函數,同時維護基底類別的建構函數和賦值運算符集。在這種情況下,重寫這些構造可能是不必要的,因為 C 提供了可行的替代方案。
明確呼叫建構子和賦值運算子:
在這種方法中,衍生類別在其自己的建構子和賦值運算子定義中顯式呼叫基底類別的建構子和賦值運算子。例如,請考慮以下情況:
<code class="cpp">class Base { public: Base(const Base& b) { /*...*/ } Base& operator=(const Base& b) { /*...*/ } }; class Derived : public Base { public: Derived(const Derived& d) : Base(d), // Base constructor additional_(d.additional_) // Additional member initialization { } Derived& operator=(const Derived& d) { Base::operator=(d); // Base assignment operator additional_ = d.additional_; return *this; } };</code>
隱式函數調度:
在衍生類別未明確重寫基底類別的賦值運算子或複製建構函數的情況下,編譯器會自動分派到適當的基底類別方法。此功能示範如下:
<code class="cpp">class Base { int value_; }; class Derived : public Base { public: Derived& operator=(const Derived& d) { Base::operator=(d); // Implicit invocation of base operator= // Perform derived-specific assignment return *this; } }; </code>
以上是如何在衍生類別中使用基底類別建構子和賦值運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!