純虛函式
是一種特殊的虛函式,它的一般格式如下:
class 《類名》
;在許多情況下,在基類中不能對虛函式給出有意義有實現,而把它說明為純虛函式,它的實現留給該基類的派生類去做。這就是純虛函式的作用。
1、為了方便使用
多型 特性,我們常常需要在基類中定義虛函式。
2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual returntype function()= 0;),則編譯器要求在派生類中必須予以過載以實現多型性。同時含有純虛函式的類稱為
抽象類 ,它不能生成物件。這樣就很好地解決了上述兩個問題。
1、多型性
指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。c++支援兩種多型性:編譯時多型性,執行時多型性。
a.編譯時多型性:通過過載函式實現
b 執行時多型性:通過虛函式實現。
2、虛函式
虛函式是在基類中被宣告為virtual,並在派生類中重新定義的成員函式,可實現成員函式的動態過載
3、抽象類
包含純虛函式的類稱為抽象類。由於抽象類包含了沒有定義的純虛函式,所以不能定義抽象類的物件。
程式舉例:
基類:class a
;子類:
class b : public a
;主函式:
int main(int argc, char* argv)
f1()是乙個隱藏,關於函式的隱藏,可以參考其它詞條.
呼叫m_j->f1();會去呼叫a類中的f1(),它是在我們寫好**的時候就會定好的.
也就是根據它是由a類定義的,這樣就呼叫這個類的函式.
f2()是普通的過載.
呼叫m_j->f2();會呼叫m_j中到底儲存的物件中,對應的這個函式.這是由於new的b
物件.f3()與f2()一樣,只是在基類中不需要寫函式實現.
c 虛函式 純虛函式 virtual 0
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...
C 虛函式 virtual
定義虛函式 為了指明函式為虛函式,在其返回型別前面加上保留字virtual,目的是啟用動態繫結。繼承層次的根類一般都要定義虛析構函式。成員預設為非虛函式,對非虛函式的呼叫在編譯時確定。除建構函式外,任意非static成員函式都可以是虛函式。保留字virtual只在類內部的成員函式宣告 現,不能用在類...
C 虛函式virtual!!!!!!!!!!
1.虛函式出現的作用 重寫父類的方法 2.虛函式的好處 用父類的指標指向子類的例項,呼叫子類的成員函式,這種技術可以讓父類的指標有多種形態,稱之多型。我們都知道,如果子類想用父類的 子類可以選擇繼承父類。如果普通成員函式,我作為父類,只是希望子類你能夠呼叫就好,不要修改它的功能。而父類宣告成virt...