C 中的繼承問題

2021-08-16 10:01:12 字數 377 閱讀 4905

在刷程式設計師面試寶典時看到這樣一題:

#include using namespace std;

class a

void print()

};class b : classa

}; int main()

答案輸出為12;

答案解釋是b類中的_a把a類中的_a"隱藏"了。在構造b類時,先呼叫a類的建構函式,所以a類的_a是1,而b類的_a是2;

可能許多人會認為答案是22,那麼在這裡如何才能讓輸出變成22呢?

第乙個方法是在子類b中將從父類a繼承的print()函式顯示的寫出來;

第二個方法是將父類a中的print()函式宣告為虛函式;

C 中的繼承問題

繼承 物件導向程式設計 使 可以復用 並允許程式設計師在原有類特性的基礎上進行擴充套件,增加功能。繼承定義格式 總結 1.基類的private成員在派生類中是不能被訪問的,基類的protected成員和public成員可以在派生類內部被訪問 2.public繼承是乙個介面繼承,保持is a原則,每個...

C 中類的繼承問題03

using system using system.collections.generic using system.text sealed class a 密封類可以例項化,但不能繼承 class c a a是密封類,所以不能繼承,只能例項化 所以此處編譯時是錯誤的 class d public ...

C 繼承中的建構函式問題

c 的繼承是不會整合建構函式的,但是子類在實現建構函式時會預設呼叫父類中的無參建構函式 想要不呼叫就要在子類中進行一些特殊操作 class program class person public person 子類需要呼叫父類的無參建構函式 public string name public int...