1.首先:強調乙個概念
定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。
定義乙個函式為純虛函式,才代表函式沒有被實現。定義他是為了實現乙個介面,起到乙個規範的作用,規範繼承這個。類的程式設計師必須實現這個函式。
2.關於例項化乙個類:
有純虛函式的類是不可能生成類物件的,如果沒有純虛函式則可以。比如:
classca
; classcb
; //ca,cb類的實現
...
voidmain()
3.虛函式在多型中間的使用:
多型一般就是通過指向基類的指標來實現的。
4.有一點你必須明白,就是用父類的指標在執行時刻來呼叫子類:
例如,有個函式是這樣的:
voidanimal::fun1(animal*maybedog_maybehorse)
引數maybedog_maybehorse在編譯時刻並不知道傳進來的是dog類還是horse類,所以就把它設定為animal類,具體到執行時決定了才決定用那個函式。也就是說用父類指標通過虛函式來決定執行時刻到底是誰而指向誰的函式。
5.用虛函式
#include
classanimal
; voidanimal::fun1(animal*maybedog_maybehorse)
animal::animal()
animal::~animal()
voidanimal::born()
///horse
classhorse:publicanimal
; horse::horse()
horse::~horse()
voidhorse::born()
///main
voidmain()
//output:horse
6.不用虛函式
#include
classanimal
; voidanimal::fun1(animal*maybedog_maybehorse)
animal::animal()
animal::~animal()
voidanimal::born()
horse
classhorse:publicanimal
; horse::horse()
horse::~horse()
voidhorse::born()
main
voidmain()
//output:animal
虛函式 純虛函式詳解
1.首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義他是為了實現乙個介面,起到乙個規範的作用,規範繼承這個。類的程式設計師必須實現這個函式。2.關於例項化乙個類 有純虛函...
虛函式 純虛函式詳解
1.首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義他是為了實現乙個介面,起到乙個規範的作用,規範繼承這個。類的程式設計師必須實現這個函式。2.關於例項化乙個類 有純虛函...
虛函式 純虛函式詳解
1.首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義他是為了實現乙個介面,起到乙個規範的作用,規範繼承這個。類的程式設計師必須實現這個函式。2.關於例項化乙個類 有純虛函...