主要是為了多型。正常情況下,父類無法呼叫子類的成員函式,但是一旦子類的函式是虛函式,那麼父類就可以呼叫該函式。案例如下:
parent *p =
newchildren()
;//呼叫 parent 類中的 method() 方法
p->
method()
;//呼叫 children 類中的 virtualmethod() 方法
p->
virtualmethod()
;
主要在申明上有所區別:
protected
:/**
* q_decl_override:這個巨集表示修飾的函式是對父類虛函式的過載
*/void
paintevent
(qpaintevent *event) q_decl_override;
虛函式 與 純虛函式 區別
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...
虛函式 純虛函式 普通函式 虛析構函式
虛函式 純虛函式 普通函式 虛析構函式 其他 靜態成員函式實現隱藏,當前檔案可見,出了這個檔案就不可見了,所以多個檔案可以定義相同的名字。出了作用域之後不銷毀,程式結束才銷毀。靜態成員函式不屬於物件,它與任何物件都是無關的,因此靜態成員函式沒有this指標。也就是說 非靜態成員函式有this指標,而...
static函式與普通函式區別
全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方 式。這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態 的全域性變數在各個原始檔中都...