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

2021-06-22 19:28:57 字數 1157 閱讀 9162

在mfc的程式中,我們經常會看到下面的程式片段,

片段一:

bool cclassdlg::oninitdialog()

片段二:

void cmyposdlg::onclose()

片段三:

前兩段**中 cdialog 是基類,cclassdlg和cmyposdlg都是派生類,易看出,這裡都涉及到了在派生類函式中呼叫基類函式,

我最開始對這種用法挺好奇,不太明白他們的意思,覺得只有靜態成員函式才能用類名來直接呼叫函式,

其實,

派生類成員函式可以呼叫基類成員函式,在派生類的普通成員函式中,使用基類作用域呼叫基類的靜態成員函式和普通成員函式都可以
下面用乙個具體的例項來驗證這一點:
#include "iostream"

using namespace std;

class a

void virtual function2()

static void function3() };

class b:public a

void function2() };

int main()

這段**的輸出結果為

分析:
(1) (2)其實就是測試派生類函式呼叫基類的函式,
在b類中,function1直接呼叫a類的function1,
function2 相當於重寫了a類的function2函式,因為加入了新的語句
(3)是測試用類名直接呼叫類中的靜態成員函式
(4)(5)(6)其實是在測試多型,只有function2函式才會呼叫子類的函式,其他的都只呼叫基類的函式,因為

function2是虛函式,這也是虛函式在多型中的作用(動態聯編)

另外,由於b是a類的派生類,function3是a類的靜態函式,

所以,也可以直接用b::function3(); 來呼叫function3

派生類和基類的函式呼叫

這篇文章舉了乙個簡單的例子說明派生類和基類在虛函式和普通函式的問題 首先宣告派生類和基類,並進行定義,如下所示 宣告部分 header.h class father class child public father 定義部分 header.cpp include include header1.h...

c ,派生類無法呼叫基類建構函式

include include using namespace std class undergraduate void showinfo private char id 10 char name 10 char major 10 class graduate public undergraduat...

C 基類與派生類的函式呼叫情況

在定義了基類的指標與派生類的物件,或者是派生類指標與基類的物件。在函式呼叫的時候,如果該函式在基類中被定義為虛函式,那麼在呼叫的時候看該指標 包括基類指標和派生類指標 所指向的物件,如果是派生類的物件就呼叫派生類中重寫的函式,如果是基類的物件就呼叫基類中的函式。如果該函式為非虛函式,那麼看該指標的型...