C C 虛函式

2021-09-24 19:40:53 字數 1224 閱讀 2890

不能是

虛函式的

幾類函式

:}

不能是虛函式

的幾類函

數:1 −構

造函式}

1−建構函式

2 −內

聯函式}

2−內聯函式

3 −靜

態函式}

3−靜態函式

4 −友

元函式}

4−友元函式

5 −普

通非類成

員函式}

5−普通非類

成員函式

構 造函

數與虛函

數順序:

}構造

函式與虛

函式順序

class a

virtual void a()}

輸出"a

"main函式中例項化b,呼叫b建構函式,若建構函式有引數則初始化引數。

因為b繼承了a,呼叫a建構函式,若建構函式有引數則初始化引數。

因為a()呼叫了a(),執行a中函式a(),此時虛機制不起作用,不會執行b中的函式b(),

因為b建構函式未完成,可能存在未初始化成員變數,按邏輯編譯器也不會讓虛機制生效。

a::a()完畢後退出函式棧,a建構函式完畢後退出函式棧,b建構函式完畢後退出函式棧。

虛 函式

與引數:

}虛函

數與引數

:class a

輸出:

「a10b

20a10b

10"}輸出

:「a1

0b20

a10b

10"前兩組不解釋。

第三組,當基類指標指向基類例項,則虛機制不會生效。

第四組,當基類指標指向派生類例項,則虛機制生效,

此時,由於是預定義引數,則先初始化引數,再執行對應虛函式,具體原因我也不清楚。

繼 承與

隱式轉換

:}

繼承與隱式轉

換: 為什麼

建構函式

不可以是

虛函式,

而析構函

數最好是

虛函式?

}為什

麼構造函

數不可以

是虛函式

,而析構

函式最好

是虛函式

c C 虛函式和純虛函式

純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類 繼承類 都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加 0。定義純虛函式的目的在於,使派生類僅僅只是繼承函式的介面。virtual 函式返回型別 函式名 參數列 0 基類base class base 虛函式 ...

C C 複習之 虛函式

物件導向程式設計的基本特徵 抽象 封裝 繼承 多型 c 中,多型分為編譯時的多型性和執行時的多型性。編譯時的多型是通過函式過載實現的,執行時的多型是通過虛函式實現的。虛函式是過載的另一種形式。這是一種動態的過載方式,它提供了一種更為靈活的執行時的多型機制。虛函式允許函式呼叫於函式體之間的聯絡在程式執...

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

定義乙個函式為虛函式,不代表函式為不被實現的函式,定義這個函式為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。我們直接看下面的 classa classb...