日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Final & Override :掌握現(xiàn)代C++的繼承和多態(tài)

來(lái)源: 責(zé)編: 時(shí)間:2024-04-29 09:08:36 160觀看
導(dǎo)讀C++編程語(yǔ)言中,final和override是兩個(gè)重要的關(guān)鍵字,它們用于增強(qiáng)類的繼承和多態(tài)機(jī)制。我們就可以使用這兩個(gè)關(guān)鍵字來(lái)幫助我們實(shí)現(xiàn)這些功能,這兩個(gè)關(guān)鍵字在C++11標(biāo)準(zhǔn)中被引入。一、Final 關(guān)鍵字1. 作用final關(guān)鍵字用于標(biāo)

C++編程語(yǔ)言中,final和override是兩個(gè)重要的關(guān)鍵字,它們用于增強(qiáng)類的繼承和多態(tài)機(jī)制。我們就可以使用這兩個(gè)關(guān)鍵字來(lái)幫助我們實(shí)現(xiàn)這些功能,這兩個(gè)關(guān)鍵字在C++11標(biāo)準(zhǔn)中被引入。nDK28資訊網(wǎng)——每日最新資訊28at.com

nDK28資訊網(wǎng)——每日最新資訊28at.com

一、Final 關(guān)鍵字

1. 作用

final關(guān)鍵字用于標(biāo)識(shí)一個(gè)類或成員函數(shù),表示它不能被繼承或覆蓋。當(dāng)應(yīng)用于類時(shí),它指示該類不能被其他類繼承。當(dāng)應(yīng)用于成員函數(shù)時(shí),它指示該函數(shù)不能在派生類中被覆蓋。nDK28資訊網(wǎng)——每日最新資訊28at.com

2.使用方法

(1) 類的用法nDK28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)final關(guān)鍵字用于類時(shí),表示該類不能被繼承。nDK28資訊網(wǎng)——每日最新資訊28at.com

class Base final {    // 類Base不能被繼承};

(2) 成員函數(shù)的用法nDK28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)final關(guān)鍵字用于成員函數(shù)時(shí),表示該函數(shù)不能在派生類中被覆蓋。nDK28資訊網(wǎng)——每日最新資訊28at.com

class Base {public:    virtual void func() final {        // func函數(shù)不能在派生類中被覆蓋    }};

(3) final的使用示例nDK28資訊網(wǎng)——每日最新資訊28at.com

class Base final {public:    virtual void func() final {        std::cout << "Base::func()" << std::endl;    }};// 錯(cuò)誤:無(wú)法從final類Base繼承class Derived : public Base {    // 錯(cuò)誤:無(wú)法覆蓋final函數(shù)func()    // virtual void func() override {    //     std::cout << "Derived::func()" << std::endl;    // }};int main() {    Base base;    base.func();    return 0;}

nDK28資訊網(wǎng)——每日最新資訊28at.com

在這個(gè)示例中,類Base被標(biāo)記為final,因此不能被其他類繼承。同樣,成員函數(shù)func()也被標(biāo)記為final,因此不能在派生類中被覆蓋。nDK28資訊網(wǎng)——每日最新資訊28at.com

二、C++ Override 關(guān)鍵字

1.作用

override關(guān)鍵字用于明確指出派生類中的成員函數(shù)旨在覆蓋基類中的同名虛擬函數(shù)。這有助于編譯器檢查派生類中的函數(shù)是否確實(shí)覆蓋了基類中的函數(shù),從而提高了代碼的可靠性和可維護(hù)性。nDK28資訊網(wǎng)——每日最新資訊28at.com

2.使用方法

override關(guān)鍵字只能用于派生類中的成員函數(shù),并且該函數(shù)必須覆蓋基類中的同名虛擬函數(shù)。nDK28資訊網(wǎng)——每日最新資訊28at.com

class Base {public:    virtual void func() {        std::cout << "Base::func()" << std::endl;    }};class Derived : public Base {public:    void func() override {        std::cout << "Derived::func()" << std::endl;    }};

override的使用示例:nDK28資訊網(wǎng)——每日最新資訊28at.com

class Base {public:    virtual void func() {        std::cout << "Base::func()" << std::endl;    }};class Derived : public Base {public:    void func() override {        std::cout << "Derived::func()" << std::endl;    }};int main() {    Base* basePtr = new Derived();    basePtr->func(); // 輸出:Derived::func()    delete basePtr;    return 0;}

在這個(gè)示例中,派生類Derived中的func()函數(shù)使用了override關(guān)鍵字,明確表示它旨在覆蓋基類Base中的同名虛擬函數(shù)。這有助于編譯器檢查func()函數(shù)是否確實(shí)覆蓋了基類中的函數(shù)。nDK28資訊網(wǎng)——每日最新資訊28at.com

三、final和override的聯(lián)合使用

在實(shí)際編程中,我們可以同時(shí)使用final和override關(guān)鍵字來(lái)實(shí)現(xiàn)更嚴(yán)格的類繼承和虛函數(shù)重寫控制。例如:nDK28資訊網(wǎng)——每日最新資訊28at.com

class Base {public:    virtual void func() {}};class Derived : public Base {public:    void func() final override { // 正確重寫了Base::func(),并且禁止進(jìn)一步重寫        // ...    }};class WrongDerived : public Derived {public:    void func() override { // 編譯錯(cuò)誤,Derived::func()已經(jīng)禁止重寫        // ...    }};

總結(jié)

final和override是C++11標(biāo)準(zhǔn)引入的兩個(gè)關(guān)鍵字,它們?yōu)轭惖睦^承和多態(tài)機(jī)制提供了更多的控制權(quán)和明確性。final關(guān)鍵字用于指示一個(gè)類或成員函數(shù)不能被繼承或覆蓋,而override關(guān)鍵字用于明確指出派生類中的成員函數(shù)旨在覆蓋基類中的同名虛擬函數(shù)。nDK28資訊網(wǎng)——每日最新資訊28at.com

nDK28資訊網(wǎng)——每日最新資訊28at.com

通過(guò)對(duì)final和override關(guān)鍵字的理解和運(yùn)用,我們可以更加安全、清晰地設(shè)計(jì)和實(shí)現(xiàn)C++程序。nDK28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-86349-0.htmlFinal &amp; Override :掌握現(xiàn)代C++的繼承和多態(tài)

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: C#中使用AES加密和解密JSON數(shù)據(jù)

下一篇: Python開(kāi)發(fā)利器:Docopt模塊幫你輕松解析命令行參數(shù)!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Mate60手機(jī)殼曝光 致敬自己的經(jīng)典設(shè)計(jì)

    8月3日消息,今天下午博主數(shù)碼閑聊站帶來(lái)了華為Mate60的第三方手機(jī)殼圖,可以讓我們?cè)谡鏅C(jī)發(fā)布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • Redmi Buds 4開(kāi)箱簡(jiǎn)評(píng):才199還有降噪 可以無(wú)腦入

    在上個(gè)月舉辦的Redmi Note11T Pro系列新機(jī)發(fā)布會(huì)上,除了兩款手機(jī)新品之外,Redmi還帶來(lái)了兩款TWS真無(wú)線藍(lán)牙耳機(jī)產(chǎn)品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們?cè)赗edmi Note11T
  • 7月安卓手機(jī)好評(píng)榜:三星S23Ultra好評(píng)率第一

    性能榜和性價(jià)比榜之后,我們來(lái)看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來(lái)源安兔兔評(píng)測(cè),收集時(shí)間2023年7月1日至7月31日,僅限國(guó)內(nèi)市場(chǎng)。第一名:三星Galaxy S23 Ultra好評(píng)率:95.71%在即將迎來(lái)新
  • 6月安卓手機(jī)性價(jià)比榜:Note 12 Turbo斷層式碾壓

    6月份有一個(gè)618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進(jìn)了,反正促銷沒(méi)壞處,廠商和用戶都能滿意。618期間一些產(chǎn)品也出現(xiàn)了歷史低價(jià),那么各個(gè)價(jià)位段的產(chǎn)品性價(jià)比
  • 零售大模型“干中學(xué)”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來(lái)源/華爾街科技眼對(duì)于絕大多數(shù)登山愛(ài)好者而言,攀爬珠穆朗瑪峰可謂終極目標(biāo)。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國(guó)境內(nèi)的北坡路線。相
  • 大廠卷向扁平化

    來(lái)源:新熵作者丨南枝 編輯丨月見(jiàn)大廠職級(jí)不香了。俗話說(shuō),兵無(wú)常勢(shì),水無(wú)常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級(jí)體系并不稀奇。7月13日,淘寶天貓集團(tuán)啟動(dòng)了近年來(lái)最大的人力制度改革,目前已形成一
  • 自研Exynos回歸!三星Galaxy S24系列將提供Exynos和驍龍雙版本

    年初,全新的三星Galaxy S23系列發(fā)布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三個(gè)版本,全系搭載超頻版驍龍8 Gen 2,雖同樣采用臺(tái)積電4nm工藝制
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據(jù)官方此前宣布,三星將于7月26日在韓國(guó)首爾舉辦Unpacked活動(dòng),屆時(shí)將帶來(lái)帶來(lái)包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國(guó)時(shí)間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內(nèi)容審核等。此前,T
Top 主站蜘蛛池模板: 牟定县| 石棉县| 成安县| 博白县| 田林县| 汉阴县| 裕民县| 石家庄市| 于田县| 揭西县| 随州市| 同心县| 杭州市| 张家川| 宁国市| 门头沟区| 长宁县| 渭南市| 墨竹工卡县| 恩施市| 那曲县| 怀集县| 桂平市| 蓝田县| 黄大仙区| 宿迁市| 时尚| 万源市| 达日县| 修文县| 扎兰屯市| 临沧市| 中牟县| 潼南县| 桦川县| 磐石市| 苗栗县| 贵德县| 郎溪县| 武宁县| 五莲县|