C 子類和父類同名成員變數或函式

2021-08-07 15:57:14 字數 491 閱讀 5133

在c++ 中子類和父類同名成員時候c++版本不同處理的方式也不同。下面是我使用visual c++ 2015 update 3的測試結果

測試**如下:

#include

using namespace std;

class base

virtual void print()

~base()

};class ****** : public base

virtual ~******()

virtual void print()

};int main()

結論:c++繼承時子類和父類同名成員變數,會同時存在這兩個變數。先從物件類本身查詢變數,找不到查詢父類直到找到。

c++繼承時子類和父類同名成員函式,存在兩種情況。

1.父類的成員函式是虛函式。根據物件的實際型別執行。

2.父類的成員函式不是虛函式。和成員變數一樣,先從物件類本身查詢函式,找不到查詢父類直到找到。

C 繼承時子類父類同名成員變數的問題

如下 c c code include iostream.h class base intprint base class public base print main 輸出結果是0,1。而不是1,1。為什麼不同呢?解釋 因為在繼承的時候,允許子類存在與父類同名的成員變數,但是並不覆蓋父類的成員變數...

C 子類函式對父類同名函式的覆蓋

class b public void f int const cout b.int endl void f double const cout b.double endl class d public b public void f void const cout d.void endl int ...

子類函式對父類同名函式的覆蓋

先看一道題 class b void f double const class d public b int main 答案 3個呼叫全部呼叫子類的f void 但由於後兩個不能轉換為void 編譯出錯。void 是可以指向任何型別的指標。c 中,只有int 0可以轉換為指標型,其餘均不可以,所以出...