繼承中的非虛成員函式

2021-06-23 05:03:32 字數 607 閱讀 9578

都是在公共繼承的前提下。類成員函式包括常用的兩種。非虛函式和虛函式。非虛函式是靜態繫結,虛函式是動態繫結。

繼承中的非虛函式(一般不用,都是在迷糊中錯用)

這種情況下,呼叫哪個函式與指標型別有關,如果指標型別是子類型別,則呼叫子類的函式,如果是父類的型別呼叫父類的函式

1,類d會不會自己複製乙個和類a一模一樣的

print函式呢?

通過程式可以說明:繼承體系中,子類繼承自父類的函式,他們指向同乙個函式入口,即他們共享父類的函式

比如下面**:

#include using namespace std;

class b

{public:

void print()

{ static int num=1;

cout << a<<" "<

2如果子類有同名的函式,(不是同型別),相當於父類同名函式被隱藏了,子類無法呼叫父類的函式了。

#include using namespace std;

class b

{public:

void print()

{ static int num=1;

cout << a<<" "<

繼承中的虛函式與非虛函式

在看公司 時,發現了一處關於虛函式的我比較難以理解的地方,大致描述如下 子類繼承父類,包括繼承了虛函式和非虛函式 子類呼叫父類中的非虛函式base printword 在這個非虛函式裡它又呼叫了虛函式doprintword 實驗表明呼叫的虛函式執行的是重寫的子類虛函式。include using n...

重新定義繼承而來的非虛函式

在一次應聘過程中,負責技術的招聘人員提出了乙個實際開發中遇到的問題 class base class derive public base 結果編譯卻發現錯誤。他想知道是怎麼回事。當時怎麼看怎麼像函式過載 公有繼承嘛 似乎沒什麼問題呀,只好說不知道。後來終於在 effective c 2nd 中找到...

不要重新定義繼承來的非虛函式

effective c item 36 class b class d public b 對於這個繼承體系,有這樣的 d x b pb x pb foo test b d pd x pd foo test d驚訝的發現,兩個語句的行為不一樣.兩者所呼叫的函式相同,物件也相同,因此行為也應該相同 但是...