嵌入式學習21(C 繼承)

2021-08-05 21:38:08 字數 1295 閱讀 9830

1、實現方法(class 派生:派生方式 父類1,派生方式 父類2…….)

class a

; class b:public a ……

;a稱為父類(基類)

b稱為子類(派生類)

2、派生方式:公有派生,保護派生,私有派生

c++不會選擇繼承,而是全部繼承(除了建構函式和析構函式),只是引用受限

公有派生:父類公有(子類公有) 私有(私有) 保護(保護)

保護派生:父類公有(保護) 私有(私有) 保護(保護)

私有繼承:父類公有(私有) 私有(私有) 保護(保護)

子類不能直接訪問父類繼承過來的私有成員(可通過父類提供的非私有介面訪問)

參考**

#include

#include

using

namespace

std;

class person

;person::person():id(0)

;teacher::teacher(int id,const

char* name,const

char* addr,const

char* dept,float salary,const

char* grade):person(id,name,addr)//父類構造

void teacher::display()

int main()

3、初始化:既要初始化新增,又要初始化繼承過來的資料,

父類只能通過初始化列表,而不能在函式體中(this->person(:))

若子類不顯示構造父類部分,則編譯器會預設新增呼叫預設建構函式。

構造:先父類再子類

析構:先子類,後父類(棧區特點)

4、過載:同一作用域下,同名函式但形參不同。

重寫(覆蓋):

函式: 父類和子類,只要函式名一樣,(形參不管一樣還是不一樣)類似全域性和區域性,子類的方法會覆蓋父類(子類優先),只是作用域被覆蓋,原來的方法還存在,不是替換

變數:子類優先

二義性:乙個子類中,父類和子類出現同名現象

解決方法:(呼叫時加上作用域)子類.作用域::成員

5、 父子之間的賦值

不同型別之間不能相互賦值,同型別之間可互相賦值,記憶體空間布局相同

子類賦值給父類(可以,子類一定有父類的一部分,空間相似:)

父類賦值給子類(失敗)

只能由子類賦值給父類,不能由父類賦值給子類

子類=子類+父類

21 C 繼承模型

類圖描述 記憶體描述 描述 include using namespace std class aint m a classb public aint m b classc public bint m c classy int main void 類圖描述 記憶體描述 描述 對class d取位址,...

嵌入式C學習

靜態變數與靜態函式 extern變數 關鍵字const和巨集定義define 程式中所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算就是直接對整數在記憶體中的二進位制位進行操作。常見的位運算有 and運算 or運算 xor運算 not運算 shl運算 和shr運算 and運算通常用於二進位制...

嵌入式C學習

位域函式指標 定義方式 結構體做函式引數傳遞有三種方式 1 用結構體的單個成員作為函式引數,向函式傳遞結構體的單個成員 屬於傳值呼叫,不會影響相應的實參結構體的值 分為值傳遞和位址傳遞。2 用結構體變數做函式引數,向函式傳遞結構體完整結構 屬於傳值呼叫,不會影響相應的實參結構體的值 屬於位址傳遞。3...