現在整理出來,希望可以記住這個。函式的名稱一樣,但是引數不同,就是過載;
函式的名稱知道了,但是編譯的時候不知道呼叫哪個函式,過載決議;根據引數決定到底應該呼叫哪個函式;
區別就是:呼叫的引數不一樣;
對於非虛函式,子類和基類同名(不管引數),那麼就是導致覆蓋;
如果引數完全一樣,那麼會完全覆蓋,只會留下子類的函式;如果引數不一樣,那麼父類的會保留到子類中;
// ****************************************=
// 覆蓋
#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...