過載覆蓋多型和虛函式

2021-09-12 07:30:47 字數 1006 閱讀 5285

現在整理出來,希望可以記住這個。

函式的名稱一樣,但是引數不同,就是過載;

函式的名稱知道了,但是編譯的時候不知道呼叫哪個函式,過載決議;根據引數決定到底應該呼叫哪個函式;

區別就是:呼叫的引數不一樣;

對於非虛函式,子類和基類同名(不管引數),那麼就是導致覆蓋;

如果引數完全一樣,那麼會完全覆蓋,只會留下子類的函式;如果引數不一樣,那麼父類的會保留到子類中;

// ****************************************=

// 覆蓋

#include #include using namespace std;

class a

void fun(int a, int b)

};class b : public a

};int main()

輸出結果:

通過虛函式實現多型;對於同名函式,基類的指標指向子類的時候,如果是虛函式,會呼叫子類的函式;

#include #include using namespace std;

// ***********************************==

// 多型

class a

virtual void fun(int a, int b)

};class b : public a

// b的fun函式 覆蓋了a的fun

virtual void fun(int a, int b)

};int main()

輸出結果:

虛函式,覆蓋和多型

一.函式宣告中的virtual關鍵字 形如 class 類名 的成員函式,稱為虛函式或方法 class shape 一.在子類中覆蓋基類的虛函式 如果子類的成員函式和基類的虛函式具有相同的函式原型,那麼該成員函式就也是虛函式,無論其是否帶有virtual關鍵字,且對基類的虛函式構成覆蓋 class ...

隱藏和覆蓋 多型 虛函式 C

隱藏 overhide 派生類中隱藏了基類中所有的同名函式 同名 不同參 繼承關係下的不同作用域 覆蓋 派生類中同名同參的虛函式覆蓋基類中同名同參的虛函式 同名同參 繼承關係下的不同作用域 均為虛函式 隱藏 class base void show protected int ma class de...

C 虛函式覆蓋 過載

cbase類處於作用域的外層,派生類的方法對於其將是不可見的,即隱藏的。而在派生類中,如果有過載函式時,基類函式將會被隱藏,否則基類函式就不被隱藏。includeusing namespace std 基類 class cbase virtual void jump void run int spe...