国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:C++繼承的三種方式,用實(shí)例教會你

嵌入式學(xué)習(xí)筆記:C++繼承的三種方式,用實(shí)例教會你 時(shí)間:2018-09-05      來源:未知

c++繼承是c里面學(xué)習(xí)比較難的,在這里告訴你c++繼承,從各個(gè)方面來給你一一擊破難點(diǎn)。讓你快速學(xué)習(xí)。

面向?qū)ο蟪绦蛟O(shè)計(jì)中最重要的一個(gè)概念是繼承。繼承允許我們依據(jù)另一個(gè)類來定義一個(gè)類,這使得創(chuàng)建和維護(hù)一個(gè)應(yīng)用程序變得更容易。這樣做,也達(dá)到了重用代碼功能和提高執(zhí)行時(shí)間的效果。

當(dāng)創(chuàng)建一個(gè)類時(shí),您不需要重新編寫新的數(shù)據(jù)成員和成員函數(shù),只需指定新建的類繼承了一個(gè)已有的類的成員即可。這個(gè)已有的類稱為基類,新建的類稱為派生類。

如何實(shí)現(xiàn)繼承?

一個(gè)類可以派生自多個(gè)類,這意味著,它可以從多個(gè)基類繼承數(shù)據(jù)和函數(shù)。定義一個(gè)派生類,我們使用一個(gè)類派生列表來指定基類。類派生列表以一個(gè)或多個(gè)基類命名,形式如下:

class derived­class: access­specifier base­class

其中,訪問修飾符 access-specifier 是 public、

protected 或 private 其中的一個(gè),base-class 是之前定義過的某個(gè)類的名稱。如果未使用訪問修飾符 access-specifier,則默認(rèn)為private。

注:

子類也可以稱為派生類,父類可以稱為基類。

繼承后,子類會完全繼承父類中所有的成員變量和成員函數(shù)(除父類的構(gòu)造函數(shù)以外)

public :公有的成員在任何地方都可以訪問

protected:受保護(hù)的成員,在類的作用范圍內(nèi)可以訪問,友元也可以訪問,在其派生類中也可以訪問,在類的外部不能訪問。

private:私有的成員在類的作用范圍內(nèi)可以訪問,友元也可以訪問。

一個(gè)派生類繼承了所有的基類方法,但下列情況除外:

基類的構(gòu)造函數(shù)、析構(gòu)函數(shù)和拷貝構(gòu)造函數(shù)。

基類的重載運(yùn)算符。

基類的友元函數(shù)。

構(gòu)造和析構(gòu)的順序:

子類的構(gòu)造函數(shù)一定會先調(diào)用父類的構(gòu)造函數(shù),先初始化從父類繼承而來的成員變量,再調(diào)用自己的構(gòu)造函數(shù)初始化新增的成員變量。

析構(gòu)相反,先調(diào)用子類的析構(gòu)函數(shù)釋放新增內(nèi)存,再調(diào)用父類的析構(gòu)函數(shù)釋放從父類繼承而來的部分。

當(dāng)父類的構(gòu)造函數(shù)沒有參數(shù)的時(shí)候,子類的構(gòu)造函數(shù)可以不主動調(diào)用父類的構(gòu)造函數(shù),但是父類的構(gòu)造函數(shù)依然會被自動調(diào)用。

三種繼承方式:

1.公有繼承 父類的公有成員繼承到子類中是公有屬性,父類的保護(hù)成員繼承到子類中是保護(hù)屬性,父類的私有成員繼承到子類中不可訪問。

2.保護(hù)繼承 父類的公有成員繼承到子類中是保護(hù)屬性,父類的保護(hù)成員繼承到子類中是保護(hù)屬性,父類的私有成員繼承到子類中不可訪問

3.私有繼承 父類的公有成員繼承到子類中是私有屬性,父類的保護(hù)成員繼承到子類中是私有屬性,父類的私有成員繼承到子類中不可訪問

公有成員保護(hù)成員私有成員

公有繼承公有成員保護(hù)成員不可訪問成員(通過基類接口訪問)

保護(hù)繼承保護(hù)成員保護(hù)成員不可訪問成員(通過基類接口訪問)

私有繼承私有成員私有成員不可訪問成員(通過基類接口訪問)

在類的內(nèi)部:只有父類的私有成員不能訪問。

在類的外部:只能訪問該對象的公有成員

多層繼承

A繼承自B,B繼承自C,可以得出,A繼承了C,繼承具有傳遞性多重繼承

一個(gè)類繼承自多個(gè)父類

如何多重繼承?

class 子類名 :public 父類1名, public 父類2名...

{

子類成員....

};

多重繼承構(gòu)造函數(shù)的順序?

一定先從左到右依次調(diào)用父類的構(gòu)造函數(shù),再調(diào)用自己的構(gòu)造函數(shù)析構(gòu)的順序相反。

多重繼承會引發(fā)二義性,如何解決?

方法1:在調(diào)用具有二義性的成員函數(shù)時(shí),指明函數(shù)的作用域,到底是從哪個(gè)基類繼承而來的。

方法2:虛繼承

C++使用虛擬繼承(Virtual Inheritance),解決從不同途徑繼承

來的同名的數(shù)據(jù)成員在內(nèi)存中有不同的拷貝造成數(shù)據(jù)不一致問題,

將共同基類設(shè)置為虛基類。這時(shí)從不同的路徑繼承過來的同名數(shù)據(jù)成員

在內(nèi)存中就只有一個(gè)拷貝,同一個(gè)函數(shù)名也只有一個(gè)映射。

繼承的關(guān)系

has-a 有什么。 組合關(guān)系不能構(gòu)成繼承關(guān)系 is-a 是什么, 能構(gòu)成繼承關(guān)系

like-a 像什么一樣 不能構(gòu)成繼承關(guān)系 as---a 作為實(shí)現(xiàn)手段 不能構(gòu)成繼承關(guān)系總結(jié):

當(dāng)類中有成員變量是其他類的對象的時(shí)候,先從上到下依次構(gòu)造對象成

員,再調(diào)用自己的構(gòu)造函數(shù)。

析構(gòu)的順序相反。

當(dāng)類中既有多重繼承,又有成員變量是其他類的對象,先從左到右依次調(diào)用父類構(gòu)造函數(shù),再從上到下

依次構(gòu)造對象成員,最后調(diào)用自己的構(gòu)造函數(shù)。

上一篇:嵌入式學(xué)習(xí)筆記:進(jìn)程間的通信方式總結(jié)

下一篇:嵌入式學(xué)習(xí)筆記:類與封裝基礎(chǔ)入門知識分享

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5,京公海網(wǎng)安備11010802025203號

回到頂部