[008]C/C++系列 | Class之間關係(三)-Inheritance(繼承)

一、底層構造

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;
};

 

二、析構&構造

注意:

base class 的 構造函數必須是virtual,否則出現undefined behavior!!!

 兩種規則:

  • 構造由內而外
  • 析構由外而內

2.1構造由內而外

Derived的構造函數首先 調用Base的default構造函數,然後再執行自己

Derived::Derived(...): Base() { ... };

2.2析構由外而內

Derived的析構函數首先是執行自己,然後調用Base析構函數

Derived::~Derived(...) { ... ~Base(); }

 

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