繼承Inheritance筆記----C++學習之路

  如果說複合和委託是has-a,那繼承就是is-a。

  1.繼承的語法。

舉個例子(代碼):

struct _List_node_base
{
    _List_node_base* _M_next;
    _List_node_base* _M_prev;
};


template<typename _Tp>
struct _List_node
:public _List_node_base
{
    _Tp _M_data;
};

黑色部分就是語法,加上之後,就是說_List_node繼承_List_node_base.

C++中除了public還有private還有protected。

傳達的意思就是,是一種_List_node_base類。


  2.從內存的角度來看繼承。

_List_node ------->_List_node_base

繼承是繼承所有的數據。以第一點中的作爲例子,_List_node除了有一個_M_base的指針還有父類中的兩個指針。


  3.繼承下的ctor與dtor、

Derived ---->Base

可以說,子類的對象有父類的成分在裏面。如圖:


依然是構造時候由內而外:Derived的構造函數首先調用Base的default構造函數,最後執行自己的構造函數  Derived::Derived(.....) : Base(){.......}

析構時候由外而內:Derived先調用自己的析構函數,再調用Base的析構函數 Derived::~Derived(.....){........~Base() }

請注意:Base的構造函數必須是virtual。


  4.繼承的用處:

繼承一般與虛函數配合使用。對於3點的注意,明天的筆記虛函數中解釋。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章