類的繼承會首先尋找基類,若基類未實現,則會尋找派生類的函式
1. class繼承,函式不繼承
#include class base
~base(){}
int a;
void seta() };
class a:public base
~a(){}
void seta()
};class b:public base
~b(){}
void seta() };
int main()
執行結果:
2. 函式和class都繼承
#include class base
~base(){}
int a;
virtual void seta() };
class a:public base
~a(){}
virtual void seta()
};class b:public base
~b(){}
virtual void seta() };
int main()
執行結果:注意派生類中可以不寫virtual,最好寫上,以辨別是函式繼承
若將2中基類的函式寫為純虛函式,執行的結果一樣,但是如果基類是純虛函式,派生類必須實現相應的函式。
class base
~base(){}
int a;
virtual void seta()=0;
};
3. 類a中不有函式,則繼承自基類
class a:public base
~a(){}
};
結果為:
類繼承 繼承類的建構函式
派生類不能直接訪問基類的私有成員,必須通過基類提供的公有方法。派生類不能繼承基類的建構函式,因為建構函式和成員函式存在區別 建構函式用於建立新的物件,而其他成員函式是被現有的物件呼叫。派生類建構函式必須使用基類的建構函式。建立派生類物件時,先建立基類物件,因此基類物件應該在進入派生類建構函式之前被建...
c 繼承 繼承 的二義性 虛函式
父類 plane 兩個類 乙個是標頭檔案 乙個是原始檔 pragma once include class plane 原始檔 include include include using namespace std plane plane name f 22 year 2010 plane plan...
類的繼承 繼承中的構造和析構
本文參照於狄泰軟體學院,唐佐林老師的 c 深度剖析教程 問題 我們繼承了父類後,如何初始化父類成員?父類建構函式和子類建構函式有什麼關係?子類中可以定義建構函式 子類建構函式必須對繼承而來的成員進行初始化 直接通過初始化列表或者賦值的方式進行初始化 呼叫父類建構函式進行初始化 父類建構函式在子類中的...