C Primer Plus學習筆記(九)類繼承

2021-08-30 08:59:13 字數 2168 閱讀 7644

類繼承意味著從基類派生出新的類,新的類包含基類的資料和方法,並增加了自己的資料和方法。

class baseplus: public base

需要繼承類特性加入派生類的建構函式、資料成員和方法。

建立派生類物件前,必須建立基類物件,通常採用初始化列表進行賦值。與此對應,派生類析構函式先執行然後基類析構函式執行。

baseplus::baseplus(int a, int b, intc):base(a,b)

//或者

baseplus::baseplus(int c, cosnt base & a1):base(a1)

除非呼叫基類預設建構函式,否則應該顯示呼叫建構函式。

由於派生類也屬於基類,因此基類引用、指標不需要轉換,可指向基類物件、派生類物件,從而可以呼叫基類方法。基類引用、指標通常可以與虛函式結合使用,從而方便管理,使得呼叫方法根據物件型別自動確定呼叫方法。

虛方法使得派生類可以對基類方法重定義,前提是二者的函式形式必須相同(比如不能乙個形參為int,乙個沒有形參)

例如:

class base

class baseplus: public base

此時,基類引用、指標可以靈活動態確定呼叫哪乙個的方法

base a(init);

baseplus b(init);

base & a1 = a;

base & b1 = b;

a1.test();//呼叫base的test方法

b1.test();//呼叫baseplus的test方法

這個方法的實現依賴於(1)虛函式、(2)指標或引用。按值傳遞的不存在這個方法,全都轉換為基類方法。

如上所述,虛函式可以實現派生類的重定義,需要注意的是虛函式的宣告需要用關鍵字virtual,方法的實現不需要virtual關鍵字

析構函式預設應設定為虛函式。

使用虛函式時,(1)空間消耗:儲存位址空間;(2)要執行建立表、查詢表的操作。優點是比較靈活,可以重定義方法。

編譯器對非虛方法實行靜態聯編,對虛方法實行動態聯編(執行時再確定執行哪個)

派生類方法可以使用基類方法,必須使用作用域解析符 :: 。

void baseplus::test() const

對於外界來說,其功能相當於private;

對於派生類來說,其功能相當於public,可以訪問private成員。

抽象基類可以派生出不同的類。

c++使用純虛函式提供未實現函式,純虛函式宣告結尾為0,。

當類宣告包含純虛函式時,不能建立該類物件。包含純虛函式的類只能用作基類。

class b

根據以前知識,若類中使用new動態分配記憶體,則預設複製建構函式不適用。假定基類使用new動態分配記憶體,則基類中包含析構函式、複製建構函式和過載複製運算子,但是派生類如果沒有使用new,派生類不需要定義顯示析構函式、複製建構函式和賦值運算子。

在此情況下,必須為派生類定義顯示析構函式、複製建構函式和賦值運算子。

例如:

class baseplus:: public base

;

相應的析構函式:

basplus::~baseplus()

複製建構函式:

baseplus::baseplus(const baseolus &r)

賦值運算子:

baseplus & baseplus::operator=(const baseplus & r)

總之,當基類和派生類都採用動態分配記憶體時,派生類的建構函式、複製建構函式、複製運算子都必須採用基類的三者來處理基類部分。析構函式:自動完成;建構函式,派生類的建構函式要使用基類的複製建構函式;賦值運算子,採用作用域解析運算子顯示呼叫,如base::operator=®

c primer plus學習筆記

1.變數名命名規則 重要的 1 有含義 2 只能用字母字元 數字和下劃線 3 第乙個字元不能是數字 4 區分大小寫 5 不能用c 關鍵字 2.整型 1 無符合型別不能表負值 2 char short 16 int short long 32,int 和longlong 64,long c 11 寬度...

C PrimerPlus學習筆記

if語句中判斷恒等,將常量放前,防止由於 寫成 造成的難以查詢的bug。if 0 count 若寫成 0 count 會報錯,count 0 則不會命名空間 using namespace std cout one cout two std cout one std cout two using s...

C Primer Plus學習筆記

1.組合語言是特地的cpu設計所採用的一組內部指令的助記符,不同的cpu型別使用不同的cpu c給予你更多的自由,也讓你承擔更多的風險 自由的代價是永遠的警惕 2.目標 檔案 可執行檔案和庫 3.可以用畫幾個盒子的方式來跟蹤乙個程式的變數 一門語言的語法就是一套規則,用於管理這種語言中的合法語句組織...