類的函式呼叫

2021-08-20 11:25:39 字數 1093 閱讀 1364

父類和子類的函式呼叫

1.用指標(引用)呼叫函式的時候,被呼叫的函式取決於指標(引用)的型別;

2.涉及多型性時,採用虛函式和動態繫結,函式呼叫在執行時繫結,而非在編譯時繫結,此時不再單獨根據指標(引用)型別來判斷呼叫的函式,而是根據物件中虛指標指向的虛表中的函式位址來確定呼叫的函式。

3.建構函式不可以是虛函式,析構函式可以是虛函式;當父類的建構函式非虛,則刪除指向子類的父類指標時,只會呼叫父類析構函式,而父類析構函式為虛時,會呼叫父類的析構函式,在呼叫子類的析構函式。

4.使用new操作的指標,必須使用delete手動刪除

i . 父類析構函式為虛函式時

#include #include using namespace std;

class father

virtual ~father() //此時的father析構函式為虛函式

void fun()

void fun1()

virtual  void fun2()

virtual  void fun3()

};class son :public father

~son() //子類為虛函式或者非虛沒有關係

void fun()

void fun2()

};

cpp檔案:

#include "father.h"

using namespace std;

int main(int argc,char *argv)

執行結果:

ii.父類函式為非虛時的執行結果:

iii .未使用delete 刪除 father_prt,son_prt時的執行結果:

類 IRtlFile 函式的呼叫

typedef inte ce ii1 ii1 inte ce ii1 typedef inte ce irtlfile irtlfile inte ce irtlfile class cfile 呼叫方法 當然還是先找乙個最簡單的函式 getname。getname 有三個引數 第乙個引數用於記錄...

類成員函式呼叫

大家都知道c 的虛函式前必須加virtual,但如果一連串的繼承下來,有的忘了加virtual會出現什麼情況呢?為了滿足我的好奇心,做了點實驗然後有了本文,僅僅是好玩,沒有啥實際意義。本文只給出vs2005的情況 首先,如果是單一類,沒加virtual的話那麼好辦,直接call a fun,非sta...

類成員函式呼叫的細節

class concrete void printerror private int val void main 為什麼會出現這種情況呢?原來是,函式定義的時候,就一直存在了。即無聊是否 例項化了乙個物件,print 這個函式,都是存在的。所以 pc print 是可以找到函式的入口的。只是這時候,...