内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

【學(xué)習(xí)筆記】C++語言程序設(shè)計(jì)(鄭莉):繼承與派生-創(chuàng)新互聯(lián)

【學(xué)習(xí)筆記】C++語言程序設(shè)計(jì)(鄭莉):繼承與派生
  • 1. 類的繼承與派生
    • 1.1 派生類的定義
    • 1.2 派生類生成過程
  • 2. 訪問控制
  • 3. 類型兼容規(guī)則
  • 4. 派生類的構(gòu)造和析構(gòu)函數(shù)
    • 4.1 構(gòu)造函數(shù)
    • 4.2 析構(gòu)函數(shù)
  • 5. 派生類成員的標(biāo)識與訪問
    • 5.1 作用域分辨符
    • 5.2 虛基類

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、阿克陶網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1. 類的繼承與派生

所謂繼承就是從先輩處得到屬性和行為特征。類的繼承,是新的類從已有類那里得到已有的特性。從另一個角度來看,從已有類產(chǎn)生新類的過程就是類的派生。由原有類產(chǎn)生新類時,新類便包含了原有類特征,同時也可以加入自己所特有的新特征。原有的類稱為基類或父類,產(chǎn)生的新類稱為派生類或子類。

  • 繼承的目的:實(shí)現(xiàn)代碼與設(shè)計(jì)的重用
  • 派生的目的:當(dāng)新的問題出現(xiàn)時,原有程序無法解決時,需要對原有程序進(jìn)行改造
1.1 派生類的定義

派生類的一般定義語法為:

class 派生類名:繼承方式 基類名1,繼承方式 基類名2,...,繼承方式 基類名n{
	派生類成員聲明;
}
//假設(shè)基類Base1和Base2是已經(jīng)定義的類,則下面定義了Derived的派生類,該類從基類Base1和Base2派生而來
class Derived:public Base1,private Base2{public:
	Derived();
	~Derived();

一個派生類只有一個直接基類的情況,稱為單繼承;一個派生類,可以同時有多個基類,這種情況稱為多繼承。在類族中,直接參與派生出某類的基類稱為直接基類,基類的基類甚至更高層的基類稱為間接基類。

在派生類的定義中,處理要指定基類外,還需要指定繼承方式。繼承方式規(guī)定了如何訪問從基類繼承的成員。在派生類的定義語句中,每一個繼承方式,只限定緊隨其后的基類。繼承方式關(guān)鍵字為:public, protected和private,分別表示公有繼承、保護(hù)繼承和私有繼承。如果不顯式的給出繼承方式關(guān)鍵字,系統(tǒng)的默認(rèn)值為私有繼承(private)。

前面的例子中對Base1是公有繼承,對Base2是私有繼承,同時聲明了派生類自己新的構(gòu)造函數(shù)和析構(gòu)函數(shù)。派生類成員是指除了從基類繼承來的所有成員之外,新增加的數(shù)據(jù)和函數(shù)成員。

1.2 派生類生成過程

派生新類的過程實(shí)際經(jīng)歷了3個步驟:吸收基類成員、改造基類成員和添加新的成員。

  • 吸收基類成員:類繼承中,第一步是將基類的成員全盤接收,這樣派生類實(shí)際上就包含了它的全部基類中除構(gòu)造和析構(gòu)函數(shù)之外的所有成員
  • 改造基類成員:對基類成員的改造包括兩個方面:一是基類成員的訪問控制問題主要依靠派生類定義時的繼承方式來控制;另一個是對基類數(shù)據(jù)或函數(shù)成員的覆蓋或隱藏。如果派生類聲明了一個和某基類成員同名的新成員(如果是成員函數(shù),參數(shù)表也要相同,參數(shù)不同的情況屬于重載),派生的新成員就隱藏了外層同名成員。
  • 添加新的成員:根據(jù)實(shí)際情況的需要,給派生類添 加適當(dāng)?shù)臄?shù)據(jù)和函數(shù)成員,來實(shí)現(xiàn)必要的新增功能。
2. 訪問控制

基類的自身成員可以對基類中任何一個其它成員進(jìn)行訪問,但是通過基類的對象,就只能訪問該類的公有成員。類的繼承方式有public、protected和private三種。不同的繼承方式,導(dǎo)致原來具有不同訪問屬性的基類成員在派生類中的訪問屬性也有所不同。這里的訪問分為:一是派生類中的新增成員訪問從基類繼承的成員。二是在派生類外部,通過派生類的對象訪問從基類繼承的成員。

  • 公有繼承:當(dāng)類的繼承方式為公有繼承時,基類的公有成員和保護(hù)成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。在類族之外只能通過派生類的對象訪問從基類繼承的公有成員。無論是派生類的成員還是派生類的對象都無法直接訪問基類的私有成員。
  • 私有繼承:當(dāng)類的繼承方式為私有繼承時,基類中的公有成員和保護(hù)成員都以私有成員身份出現(xiàn)在派生類中,而基類的私有成員在派生類中不可直接訪問。派生類的其它成員可以直接訪問從基類繼承而來的公有和保護(hù)成員,但是在類族外部通過派生類的對象無法直接訪問它們。
  • 保護(hù)繼承:保護(hù)繼承中,基類的公有成員和保護(hù)成員都以保護(hù)成員的身份出現(xiàn)在派生類中,而基類的私有成員不可直接訪問。派生類的其它成員可以直接訪問從基類繼承而來的公有和保護(hù)成員,但在類外部通過派生類的對象無法直接訪問它們。
  • 私有繼承和保護(hù)繼承的異同:
    • 在直接派生類中,所有成員的訪問屬性都是完全相同的
    • 如果派生類作為新的基類繼續(xù)派生時,兩者就有了區(qū)別。假設(shè)Rectangle類以私有方式繼承了Point類后,Rectangle類又派生出Square類,那么Square類的成員和對象都不能訪問間接從Point類中繼承來的成員。如果Rectangle類是以保護(hù)方式繼承了Point類,那么Point類中的公有和保護(hù)成員在Rectangle類中都是保護(hù)成員。Rectangle類再派生出Square類后,Point類中的公有成員和保護(hù)成員被Square類間接繼承后,有可能是保護(hù)成員或私有成員(按具體派生方式可知)。因此,Square類的成員有可能可以訪問間接從Point類中繼承來的成員。即Point類中的保護(hù)成員有可能被它的派生類訪問,但是絕不可能被其它外部使用者訪問。

3. 類型兼容規(guī)則

類型兼容規(guī)則是指在需要基類對象的任何地方,都可以使用公有派生類的對象來替代。類型兼容規(guī)則中所指的替代包括以下的情況:

  • 派生類的對象可以隱含轉(zhuǎn)換為基類對象
  • 派生類的對象可以初始化基類的引用
  • 派生類的指針可以隱含轉(zhuǎn)換為基類的指針

在替代之后,派生類對象就可以作為基類的對象使用,但只能使用從基類繼承的成員。

4. 派生類的構(gòu)造和析構(gòu)函數(shù)

由于基類的構(gòu)造和析構(gòu)函數(shù)不能被繼承,在派生類時中,如果對派生類新增的成員進(jìn)行初始化,就必須為派生類添加新的構(gòu)造函數(shù)。但是派生類的構(gòu)造函數(shù)只負(fù)責(zé)對派生類新增的成員進(jìn)行初始化,對所有從基類繼承下來的成員,其初始化工作還是由基類的構(gòu)造函數(shù)完成,同樣,對派生類對象的掃尾、清理工作也需要加入新的析構(gòu)函數(shù)。

4.1 構(gòu)造函數(shù)

構(gòu)造派生類的對象時,就要對基類的成員對象和新增成員對象進(jìn)行初始化。在構(gòu)造派生類的對象時,會首先調(diào)用基類的構(gòu)造函數(shù)來初始化它們的數(shù)據(jù)成員,然后按照構(gòu)造函數(shù)初始化列表中指定的方式初始化派生類新增的成員對象,最后才執(zhí)行派生類構(gòu)造函數(shù)的函數(shù)體。派生類構(gòu)造函數(shù)的一般語法形式為:

派生類名::派生類名(參數(shù)表):基類名1(基類1初始化參數(shù)表),...,基類名n(基類n初始化參數(shù)表),成員對象名1(成員對象1的初始化參數(shù)表),...,成員對象名 m(成員對象m初始化參數(shù)表){
	派生類構(gòu)造函數(shù)的其他初始化操作;
}

如果對基類初始化時,需要調(diào)用基類的帶有形參表的構(gòu)造函數(shù)時,派生類就必須聲明構(gòu)造函數(shù)。派生類構(gòu)造函數(shù)執(zhí)行的一般次序?yàn)椋?/p>

  • 調(diào)用基類構(gòu)造函數(shù),調(diào)用順序按照它們被繼承時聲明的順序
  • 對派生類新增的成員對象初始化,調(diào)用順序按照他們在類中聲明的順序
  • 執(zhí)行派生類的構(gòu)造函數(shù)體
4.2 析構(gòu)函數(shù)

在派生過程中,基類的析構(gòu)函數(shù)也不能繼承下來,如果需要析構(gòu),就要在派生類中聲明新的構(gòu)造函數(shù)。派生類的析構(gòu)函數(shù)的功能是在該類對象消亡之前進(jìn)行一些必要的清理工作。析構(gòu)函數(shù)沒有類型,也沒有參數(shù)。


5. 派生類成員的標(biāo)識與訪問

在派生類中,成員可以按訪問屬性劃分為:不可訪問的成員、私有成員、保護(hù)成員和公有成員。

5.1 作用域分辨符

作用域分辨符 “::” 用來限定要訪問的成員所在的類別名稱。一般的使用形式為:

類名::成員名                 //數(shù)據(jù)成員
類名::成員名(參數(shù)表)         //函數(shù)成員

如果派生類中聲明了與基類成員函數(shù)同名的新函數(shù),即使函數(shù)的參數(shù)表不同,從基類繼承的同名函數(shù)的所有重載形式也都會被隱藏。如果派生類的多個基類擁有同名的成員,同時,派生類又新增這樣的同名成員,在這種情況下,派生類成員將隱藏所有基類的同名成員。

5.2 虛基類

當(dāng)某類的部分或全部直接基類是從另一個共同基類派生而來時,在這些直接基類中從上一級共同基類繼承來的成員就擁有多個相同的名稱。在派生類的對象中,這些同名數(shù)據(jù)成員在內(nèi)存中同時擁有多個副本,同一個函數(shù)名會有多個映射??梢允褂米饔糜蚍直娣麃砦ㄒ粯?biāo)識并分別訪問它們,也可以將共同基類設(shè)置為虛基類,這時從不同的路徑繼承過來的同名數(shù)據(jù)成員在內(nèi)存中就只有一個副本,同一個函數(shù)名也只有一個映射。虛基類的聲明是在派生類的定義過程中進(jìn)行的,語法格式為:

class 派生類名:virtual 繼承方式 基類名

課程鏈接:https://www.bilibili.com/video/BV1iF411Y74v

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標(biāo)題:【學(xué)習(xí)筆記】C++語言程序設(shè)計(jì)(鄭莉):繼承與派生-創(chuàng)新互聯(lián)
URL分享:http://www.rwnh.cn/article44/csoihe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、定制開發(fā)、服務(wù)器托管、虛擬主機(jī)App開發(fā)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
利辛县| 萨嘎县| 张掖市| 河西区| 远安县| 和顺县| 日照市| 许昌市| 乌恰县| 金秀| 寻甸| 正安县| 洪湖市| 鄂托克旗| 长宁区| 永善县| 揭阳市| 多伦县| 晋宁县| 西城区| 陆河县| 淮阳县| 尚志市| 新邵县| 阳西县| 苍山县| 东乡族自治县| 新余市| 保德县| 昌黎县| 云阳县| 麦盖提县| 诸暨市| 米泉市| 太白县| 章丘市| 堆龙德庆县| 铁岭市| 青州市| 唐河县| 贵德县|