C++繼承的標(biāo)準(zhǔn)寫法:
“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來堅(jiān)持追求的企業(yè)文化。 創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、軟件開發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!class BaseMonster { public: string name; string skill; uint32_t hp; void attack() { cout << "Base :: 發(fā)動(dòng)***" << endl; } }; class RedDemonKing : public BaseMonster { } ;
解析:
① 類 RedDemonKing 集成了 類BaseMonster
② 集成的限定詞為 public->
③ 對(duì)限定詞的解析->
采用降級(jí)處理 : 級(jí)別從高到低(降序) public , protected , private 。如采用public,則基類中比public高的成員,全部降一級(jí)(因?yàn)闆]有比public高的級(jí)別 , 所以都不降級(jí)。但是protected的話 , 基類中的public在子類中的訪問級(jí)別就降了一級(jí)變成protected)。
④ 如果省略繼承的限定詞,則默認(rèn)為private限定詞。
具體:
一,繼承構(gòu)造函數(shù)的調(diào)用順序->先調(diào)用父類的構(gòu)造函數(shù),再調(diào)用子類(自己)的構(gòu)造函數(shù)
1,當(dāng)基類的構(gòu)造函數(shù)為無參構(gòu)造:
#includeusing namespace std; class BaseMonster { public: string name; string skill; uint32_t hp; void attack() { cout << "Base :: 發(fā)動(dòng)***" << endl; } }; class RedDemonKing : public BaseMonster { } ; int main() { RedDemonKing rdk; rdk.name = "赤妖王"; cout << rdk.name << endl; return 0; }
2,當(dāng)基類有有參數(shù)的構(gòu)造函數(shù)時(shí):
#includeusing namespace std; class BaseMonster { public: string name; string skill; BaseMonster( string name ) { this->name = name; } void attack() { cout << "Base :: 發(fā)動(dòng)***" << endl; } }; class RedDemonKing : public BaseMonster { public: RedDemonKing( string name ) : BaseMonster(name) { this->skill = "會(huì)心一擊"; } } ; int main() { RedDemonKing rdk("赤妖王"); cout << rdk.name << endl; return 0; }
解析:
① RedDemonKing( string name ) : BaseMonster(name) , 以此格式(參數(shù)列表)為調(diào)用基類構(gòu)造。
二,覆蓋
#includeusing namespace std; class BaseMonster { public: string name; string skill; BaseMonster( string name ) { this->name = name; } void attack() { cout << "Base :: 發(fā)動(dòng)***" << endl; } }; class RedDemonKing : public BaseMonster { public: string name; RedDemonKing( string name ) : BaseMonster(name) { this->name = "赤妖王"; this->skill = "會(huì)心一擊"; } } ; int main() { RedDemonKing rdk("妖怪"); cout << rdk.name << endl; cout << rdk.BaseMonster::name << endl; return 0; }
解析:
① 當(dāng)子類和基類有相同名字的成員如上(name),那么子類的name就對(duì)積累的name形成了覆蓋(相當(dāng)與作用域)
② 默認(rèn)取值 rdk.name , 取得是子類(自己)的值 。 如果要取基類的值需指定域 : rdk.BaseMonster::name
③ 重點(diǎn) , 只要是名字一樣都會(huì)形成覆蓋,不存在重載:
要調(diào)用基類的函數(shù) 必須指定域
firend(友元)不能被繼承( 可以這么理解 : 父親的朋友 , 不一定是自己的朋友 )
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。