派生類和基類的函式呼叫

2021-07-02 13:48:21 字數 1148 閱讀 6266

這篇文章舉了乙個簡單的例子說明派生類和基類在虛函式和普通函式的問題;

首先宣告派生類和基類,並進行定義,如下所示:

宣告部分(header.h):

class father

;class child : public father

;

定義部分(header.cpp):

#include #include "header1.h"

using namespace std;

void father::fun1()

{ cout<

#include #include "header1.h"

using namespace std;

void main()

{ father father;

child child;

father.fun1(); //物件是基類,呼叫基類成員函式

father.virtualfun2(); //同上

child.fun1(); //物件是派生類,呼叫派生類成員函式

child.virtualfun2(); //同上

cout

pfather1->virtualfun2(); //pfather指向乙個基類物件,動態繫結基類虛函式

pfather2->fun1(); //pfather指向乙個派生類物件,但是fun1非虛函式,呼叫基類成員函式

pfather2->virtualfun2(); //pfather指向乙個派生類物件,動態繫結派生類虛函式

cout編譯結果如下:

因此,大概可以得出以下結論:

1、在編譯時確定非虛函式的呼叫規則,即無論實際物件是什麼型別,都執行基類型別所定義的函式;

2、在執行時確定虛函式的呼叫規則,即執行的虛函式是指標所指向或引用所繫結的物件所屬型別定義的版本。

C 派生類函式呼叫基類的函式

在mfc的程式中,我們經常會看到下面的程式片段,片段一 bool cclassdlg oninitdialog 片段二 void cmyposdlg onclose 片段三 前兩段 中 cdialog 是基類,cclassdlg和cmyposdlg都是派生類,易看出,這裡都涉及到了在派生類函式中呼叫...

基類和派生類

include include using namespace std class animal class dog public animal class dog public animal這裡的 就是繼承或派生,class cat public animal class item base st...

基類和派生類 this

基類指標在程式執行的時候的確指向的是乙個派生類的物件,但指標的型別仍然是基類指標。c 是一種強型別語言,因此不能用基類指標型別的指標直接呼叫派生類 而且,同乙個類可能有多種不同的派生類,因此不知道實際指向的會是哪個派生類。如果確信是某個派生類的話,可以用這樣的方法來呼叫 cb this b 1 cb...