在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可以轉換為指標型,其餘均不可以,所以出...