父類和子類的函式呼叫
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 是可以找到函式的入口的。只是這時候,...