c opp虛函式和抽象基類

2021-09-26 16:24:09 字數 992 閱讀 8478

class base

~base() = default;

virtual int getnum()

private:

int num;

};class derive : public base

~derive() = default;

//為虛函式,可以使用virtual修飾,也何以不使用,因為被定義為虛函式後在所有的派生類中都是虛函式。

//派生類中的虛函式的形參和返回型別必須和基類中的相同,除返回的是類本身的指標或引用外。

int getnum()

private:

int der_num;

};void shownum(base& base)

int main()

;struct str_b : str_a

;//使用final,則在之後的派生類中不能覆蓋基類中的該虛函式。

struct str_c : str_a

;struct str_d : str_c

;//虛函式可以擁有預設實參,派生類中的虛函式實參最好與基類中的一致,不然可能會出現問題。

//可以使用域作用符強行指定執行特定的版本的虛函式,避免了動態繫結。

derive *derive_1;

derive_1->base::getnum();

純虛函式

//乙個純虛函式無須定義

//在虛函式定義時,將其使用=0來定義,該虛函式就是純虛函式。

//=0只能出現在類內部的虛函式宣告語句處。

//virtual int fun(int) const = 0;

抽象基類

//含有純虛函式的類是抽象基類

//不能定義抽象基類的物件

struct str_chou

;//str_chou chou;//錯誤 str_chou為抽象基類

return 0;

}

純虛函式和抽象基類

純虛函式的格式 virtual 型別 函式名 參數列 0 而我們的純虛函式經常被用來構建抽象基類。抽象基類 當我們僅想對基類進行向上型別轉換,使用它的介面,而不希望使用者實際地建立乙個基類的物件,那麼我們就在基類中加入至少乙個純虛函式 pure virtual function 來使基類稱為抽象 a...

純虛函式和抽象基類

純虛函式就是基類只定義了函式體,沒有具體的實現過程,必須在子類中加以實現。如果基類中含有乙個或多個純虛函式,那麼它就屬於抽象基類,不能被例項化。1 引入抽象基類和純虛函式的原因有以下兩點 1 為了方便的是使用多型特性 2 在很多情況下,基類本身生成物件是不合情理的。抽象基類不能夠被例項化,它定義的純...

虛基類 虛函式 純虛函式和抽象類

一 虛基類 在 多繼承 中講過的例子中,由類a,類b1和類b2以及類c組成了類繼承的層次結構。在該結構中,類c的物件將包含兩個類a的子物件。由於類a是派生類c兩條繼承路徑上的乙個公共基類,那麼這個公共基類將在派生類的物件中產生多個基類子物件。如果要想使這個公共基類在派生類中只產生乙個基類子物件,則必...