C 繼承與同名成員變數

2021-08-07 16:48:39 字數 457 閱讀 8625

話不多說,先看下面這個例子:

#include 

class base

void print()

~base()

};class derived : public base

~derived()

};int main()

你們猜上面程式的輸出結果是啥?反正我是猜錯了[捂臉]。正確答案是0,1,而不是1,1。

下面解釋下:

在繼承的時候,允許子類存在和父類同名的成員變數,但是子類中和父類同名的成員變數並不會覆蓋父類中的成員變數,它們是同時存在的。

在子類建立物件時,會先呼叫父類的建構函式,先為父類的a變數進行初始化,然後呼叫父類的建構函式為自己的a進行初始化,因為子類中沒有定義print函式,所以按照就近原則去父類中查詢print函式,於是呼叫父類中的print函式,而這個函式會呼叫父類的a變數。

c 繼承中同名成員處理

所謂同名成員也就是 子類與父類 變數或者成員函式重名 看看以下 了解訪問方式 1 include2 using namespace std 34 class father512 void fun int x 13 17protected 18 intb 19private 20 intc 21 22...

繼承中的同名成員變數處理方法

1 當子類成員變數與父類成員變數同名時 2 子類依然從父類繼承同名成員 3 在子類中通過作用域分辨符 進行同名成員區分 在派生類中使用基類的同名成員,顯式地使用類名限定符 4 同名成員儲存在記憶體中的不同位置 總結 同名成員變數和成員函式通過作用域分辨符進行區分。如下 include using n...

C 繼承同名成員處理方式

問題 當子類與父類出現同名的成員,如何通過子類物件,訪問帶子類或父類中同名的資料?1.訪問子類同名成員 直接訪問即可 2.訪問父類同名成員 需要加作用域 示例 include using namespace std 繼承同名成員處理方式 class base void func void func ...