繼承:減少**重複內容。c++通過繼承機制可以利用已有的資料型別來定義新的資料型別,新的類不僅擁有舊類的成員,還擁有新定義的成員。
乙個b類繼承於a類,或稱從a類派生類b。這樣的話,類a成為基類,類b成為派生類。
派生類的成員,包含兩大部分:
;//公有繼承
class son1 :public base1
};void myfunc()
/// /保護繼承///
class base2
;class son2 :protected base2
};void myfunc1()
/// /保護繼承///
class base3
;class son3 :private base3
};class grandson3 :public son3
;//子類中 會繼承父類的私有成員 ,只是被編譯器給隱藏起來,訪問不到私有成員
class son :public base
;void test01()
int main()
子類物件在建立時會首先呼叫父類中的建構函式
父類建構函式執行完畢後,才會呼叫子類的建構函式
當父類建構函式有引數時,需要在子類初始化列表中顯示呼叫父類建構函式
析構函式呼叫順序和建構函式相反
**例項:
#define _cri_secure_no_warnings
#define _crt_secure_no_warnings
using namespace std;
#include#includeclass base
~base() };
//子類會繼承父類成員屬性,成員函式
//但是 子類不會繼承 父類建構函式和析構函式
//只有父類自己知道如何構造和析構自己的屬性,而子類不知道
class son :public base
~son() };
void test01()
class base2
int m_a;
};//如果父類中沒有合適的預設構造,那麼子類可以利用初始化列表的方式顯示呼叫父類的其他構造
class son2 :public base2
};void test02()
int main()
#define _cri_secure_no_warnings
#define _crt_secure_no_warnings
using namespace std;
#include#includeclass base
void fun()
int m_a;
};class son :public base
void fun()
int m_a;
};void test01()
//如果子類和父類擁有同名的函式屬性 子類會覆蓋父類的成員嗎? 不會
//如果子類與父類的成員函式名稱相同,子類會把父類的所有同名版本都隱藏掉
//想呼叫父類的方法,必須加作用域
int main()
靜態成員函式和非靜態成員函式都可以被繼承到派生類中,但靜態成員函式不能是虛函式。
**:
#define _cri_secure_no_warnings
#define _crt_secure_no_warnings
using namespace std;
#include#includeclass base
static void func(int a)
static int m_a;
};int base::m_a = 10;
class son :public base
static void func(int a)
static int m_a;
};int son::m_a = 20;
//靜態成員屬性 子類可以繼承下來
void test01()
int main()
我們可以從乙個類繼承,我們也可以能同時從多個類繼承,這就是多繼承。但是由於多繼承是非常受爭議的,從多個類繼承可能會導致函式、變數等同名導致較多的歧義。
//不建議使用多繼承
int main()
兩個派生類繼承同乙個基類而又有某個類同時繼承者兩個派生類,這種繼承被稱為菱形繼承
問題:
對於重複繼承問題,c++提供了虛基類來解決。
**例項:
#define _cri_secure_no_warnings
#define _crt_secure_no_warnings
using namespace std;
#include#includeclass animal
;//class sheep : public animal
//虛基類sheep
class sheep:virtual public animal //虛繼承
;//class tuo :public animal
//虛基類 tuo
class tuo :virtual public animal
;class sheeptuo :public sheep, public tuo
;//菱形問題的解決方案 利用虛繼承
void test01()
int main()
C 繼承與派生
派生新類 吸收已有類的成員 調整已有類成員和新增新的成員 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,派生類成員宣告 繼承方式有 public protected private 預設 公有繼承 基類的公有和保護乘員的訪問屬性在派生類中不變,基類的私有成員不能直接訪問 型別相容規則...
c 繼承與派生
繼承 與派生 一 派生方式的不同的表現 1 派生類在類內成員對基類成員 的訪問許可權 2 派生類的物件對基類成員的訪問許可權。二 公有繼承 1 基類protected和public的成員在派生類中訪問屬性保持不變 2 基類的private成員在派生類中不可訪問。3 派生類的成員 即派生類內 可以直接...
c 繼承與派生
一 基本概念 1 類的繼承,是新的類從已有類那裡得到已有的特性。或從已有類產生新類的過程就是類的派生。原有的類稱為基類或父類,產生的新類稱為派生類或子類。2 派生類的宣告 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,繼承方式 基類名n 3 乙個派生類可以同時有多個基類,這種情況稱為...