1
-
重寫 (Override):?派生類中定義一個與基類虛函數具有相同函數簽名(函數名、參數列表、返回類型)的函數,這被稱為重寫。 重寫意味著派生類提供了基類虛函數的一個特定于派生類的實現。?重寫是實現多態的關鍵
2
-
虛基類 (Virtual Base Class):
- 用于解決多繼承中的菱形繼承問題。 菱形繼承指的是一個類從兩個或多個具有共同基類的類派生而來,這會導致派生類中包含共同基類的多個副本,從而產生二義性。
- 通過在繼承聲明中使用?
virtual
?關鍵字,可以將基類聲明為虛基類。 這確保了派生類中只包含虛基類的一個副本。
class A { public: int x; };
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {}; // 菱形繼承,但 A 是虛基類
3
C++ 是通過繼承和虛函數(以及重寫虛函數)實現動態(運行時)多態性的。
4
在C++中,友元函數不會被繼承。這意味著如果你在一個基類中聲明了一個友元函數,這個友元關系不會自動傳遞給派生類。每個類都必須單獨聲明其友元函數。
5
- 省略?
this
?指針:在成員函數中,如果沒有命名沖突,直接使用成員名(如?length
),編譯器會默認它是當前對象的成員,等同于?this->length
。