天天看點

靜态聯編,動态聯編,類指針之間的關系,虛函數與多态性,純虛函數,虛析構函數

1.靜态聯編,是程式的比對,連接配接在編譯階段實作,也稱為早期比對。重載函數使用靜态聯編。

2.動态聯編是指程式聯編推遲到運作時進行,是以又稱為晚期聯編。switch語句和if語句是動态聯編的例子。

3.靜态聯編

   普通成員函數重載可表達為兩種形式

   在一個類說明中重載

   基類的成員函數在派生類重載。有3中編譯區分方法:

   (1):根據參數的特征加以區分

   (2):使用”::”加以區分

          例如:a::show();

          有别于b::show()

    (3):根據類對象加以區分

        例如:aobj.show(); 

調用 

a::show();

bobj.show();  調用 

b::show();

案例:

4.類指針的關系

   基類指針和派生類指針與基類對象和派生類對象4種可能比對。

      a:直接用基類指針引用基類對象。

      b:直接用派生類指針引用派生類對象。

      c:用基類指針引用一個派生類對象。

      d:用派生類指針引用一個基類對象。

5.類與指針之間的關系

      adynamic适用于虛函數

      b類而言,資料是私有,代碼是公有的

      c指針為空,指向一個類,可以直接調用方法

      d涉及内部成員會崩潰,不涉及可以執行

      e父類指針引用父類對象,完全正常引用

      f子類指針引用子類對象,覆寫父類的同名函數

      g父類指針引用子類對象,隻能引用父類中的函數

      h子類指針,引用父類對象,子類不涉及内部資料的函數會調用成功

      i涉及到内部資料的會調用成功,執行失敗

     j子類指針可以引用父類的不重名的函數

     k子類指針(不是pzi->fu::print();方法)無法引用父類的同名方法

案例如下:

fu.h

6.冠以關鍵字virtual的成員函數稱為虛函數。

實作運作時多态的關鍵首先是要說明虛函數,另外,必須用基類指針調用派生類的不同實作版本。

7.  對于虛函數的總結:

a對于繼承的情況,如果自來實作了父類的同名函數,

b當指針調用的時候會一直調用父類的函數,當成員函數加了virtual

c關鍵字修飾之後,子類才會調用自己的函數。

8:純虛函數

靜态聯編,動态聯編,類指針之間的關系,虛函數與多态性,純虛函數,虛析構函數
靜态聯編,動态聯編,類指針之間的關系,虛函數與多态性,純虛函數,虛析構函數

案例2:

9.虛析構函數,在析構函數的前面加上virtual

案例代碼如下:

靜态聯編,動态聯編,類指針之間的關系,虛函數與多态性,純虛函數,虛析構函數

如果析構函數前加了virtual,運作結果如下:

靜态聯編,動态聯編,類指針之間的關系,虛函數與多态性,純虛函數,虛析構函數

10.

者多個虛函數,或者多個純虛函數都占四個位元組

案例說明如下: