0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++之繼承中構(gòu)造和析構(gòu)學(xué)習(xí)的總結(jié)

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 16:10 ? 次閱讀

在我們前面學(xué)習(xí)過(guò)類中的構(gòu)造函數(shù),以及析構(gòu)函數(shù),那么自然而然,在繼承關(guān)系中,必然是存在著析構(gòu)和構(gòu)造著。

一、子類對(duì)象的構(gòu)造

1、問(wèn)題的引出

如何初始化父類成員?

父類構(gòu)造函數(shù)和子類構(gòu)造函數(shù)有什么關(guān)系?

2、子類中的構(gòu)造函數(shù)怎樣初始化父類成員:

子類中也是可以定義構(gòu)造函數(shù)的:

--必須對(duì)繼承而來(lái)的成員進(jìn)行初始化,那么怎樣初始化呢?這里有兩種方式:

-直接通過(guò)初始化列表或者賦值的方式進(jìn)行初始化

-調(diào)用父類構(gòu)造函數(shù)進(jìn)行初始化

3、父類構(gòu)造函數(shù)在子類中的調(diào)用方式

默認(rèn)調(diào)用

-適用于無(wú)參構(gòu)造函數(shù)和使用默認(rèn)參數(shù)的構(gòu)造函數(shù)

顯示調(diào)用

-通過(guò)初始化列表進(jìn)行調(diào)用

-適用于所有父類構(gòu)造函數(shù)

實(shí)踐代碼模板:

代碼實(shí)踐:

輸出結(jié)果:

注解:通過(guò)上面的代碼輸出結(jié)果,我們可以發(fā)現(xiàn),子類定義的對(duì)象如果沒(méi)有沒(méi)有傳參,就隱式調(diào)用父類的構(gòu)造函數(shù);當(dāng)然上面也使用了顯示調(diào)用,通過(guò)初始列表的就可以看出。

4、構(gòu)造規(guī)則

子類對(duì)象在創(chuàng)建時(shí)會(huì)首先調(diào)用父類的構(gòu)造函數(shù)

先執(zhí)行父類構(gòu)造函數(shù)再執(zhí)行子類的構(gòu)造函數(shù)

父類構(gòu)造函數(shù)可以被隱式調(diào)用或者顯示調(diào)用

5、對(duì)象創(chuàng)建時(shí)構(gòu)造函數(shù)的調(diào)用順序

(1)調(diào)用父類的構(gòu)造函數(shù)

(2)調(diào)用成員變量的構(gòu)造函數(shù)

(3)調(diào)用類自身的構(gòu)造函數(shù)

總結(jié):先父母,后客人,再自己

代碼實(shí)踐:

輸出結(jié)果:

注解:我們可以看到,先定義了一個(gè)Child對(duì)象,然后最先訪問(wèn)Object帶參構(gòu)造函數(shù),然后再是Parent帶參構(gòu)造函數(shù)(說(shuō)白了就是父類先觸發(fā)),然后在子類Child中又包含了組合關(guān)系(也就是客人),然后Object類中的帶參構(gòu)造函數(shù),最后再觸發(fā)自身的帶參構(gòu)造函數(shù)。

二、子類對(duì)象的析構(gòu)

1、析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)相反

(1)執(zhí)行自身的析構(gòu)函數(shù)

(2)執(zhí)行成員變量的析構(gòu)函數(shù)

(3)執(zhí)行父類的析構(gòu)函數(shù)

代碼實(shí)踐:

輸出結(jié)果:

三、總結(jié):

子類對(duì)象在創(chuàng)建時(shí)需要調(diào)用父類構(gòu)造函數(shù)進(jìn)行初始化

先執(zhí)行父類構(gòu)造函數(shù)然后執(zhí)行成員的構(gòu)造函數(shù)

父類構(gòu)造函數(shù)顯示調(diào)用需要在初始化列表中進(jìn)行

子類對(duì)象在銷毀時(shí)需要調(diào)用父類析構(gòu)函數(shù)進(jìn)行清理

析構(gòu)順序與構(gòu)造順序?qū)ΨQ相反

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    514

    瀏覽量

    44040
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2090

    瀏覽量

    73419
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ostream在c++的用法

    ostream 是 C++ 標(biāo)準(zhǔn)庫(kù)中一個(gè)非常重要的類,它位于 頭文件(實(shí)際上,更常見(jiàn)的是通過(guò)包含 頭文件來(lái)間接包含 ,因?yàn)?包含了 和 )。 ostream 類及其派生類(如 std::cout
    的頭像 發(fā)表于 09-20 15:11 ?307次閱讀

    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫(kù)案例:SafeQueue

    1、程序簡(jiǎn)介該程序是基于OpenHarmony的C++公共基礎(chǔ)類庫(kù)的線程安全隊(duì)列:SafeQueue。線程安全隊(duì)列,是在dequeue的基礎(chǔ)上封裝std::lock_guard,以此實(shí)現(xiàn)線程的相關(guān)
    的頭像 發(fā)表于 08-30 12:41 ?195次閱讀
    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的<b class='flag-5'>C++</b>公共基礎(chǔ)類庫(kù)案例:SafeQueue

    C++實(shí)現(xiàn)類似instanceof的方法

    C++有多態(tài)與繼承,但是很多人開始學(xué)習(xí)C++,有時(shí)候會(huì)面臨一個(gè)常見(jiàn)問(wèn)題,就是如何向下轉(zhuǎn)型,特別是不知道具體類型的時(shí)候,這個(gè)時(shí)候就希望C++
    的頭像 發(fā)表于 07-18 10:16 ?445次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>實(shí)現(xiàn)類似instanceof的方法

    鴻蒙OS開發(fā)實(shí)例:【Native C++

    使用DevEco Studio創(chuàng)建一個(gè)Native C++應(yīng)用。應(yīng)用采用Native C++模板,實(shí)現(xiàn)使用NAPI調(diào)用C標(biāo)準(zhǔn)庫(kù)的功能。使用C標(biāo)準(zhǔn)庫(kù)hypot接口計(jì)算兩個(gè)給定數(shù)平方和的平
    的頭像 發(fā)表于 04-14 11:43 ?2384次閱讀
    鴻蒙OS開發(fā)實(shí)例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標(biāo)準(zhǔn)?和?C++ 的歷史?。在這篇博客,我們將仔細(xì)研究以 C++
    的頭像 發(fā)表于 03-28 13:53 ?666次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    c語(yǔ)言,c++,java,python區(qū)別

    操作系統(tǒng)、嵌入式系統(tǒng)等對(duì)性能要求較高的場(chǎng)景。C語(yǔ)言的語(yǔ)法相對(duì)簡(jiǎn)單,學(xué)習(xí)曲線較平緩,也是學(xué)習(xí)其他高級(jí)語(yǔ)言的入門語(yǔ)言。 C++C++是在
    的頭像 發(fā)表于 02-05 14:11 ?1685次閱讀

    vb語(yǔ)言和c++語(yǔ)言的區(qū)別

    Microsoft開發(fā)的一種面向?qū)ο蟮氖录?qū)動(dòng)編程語(yǔ)言。它的設(shè)計(jì)目標(biāo)是簡(jiǎn)化編程過(guò)程,讓初學(xué)者也能快速上手。與相比,C++語(yǔ)言是一種通用的、面向?qū)ο蟮木幊陶Z(yǔ)言,其設(shè)計(jì)目標(biāo)是提供高性能的系統(tǒng)級(jí)編程。 語(yǔ)法: VB語(yǔ)言的語(yǔ)法較為簡(jiǎn)單,使用了很多可讀性強(qiáng)的關(guān)鍵詞,如“
    的頭像 發(fā)表于 02-01 10:20 ?1813次閱讀

    C++簡(jiǎn)史:C++是如何開始的

    的 MISRA C++:2023 博客系列的第二部分。 在這篇博客,我們將深入探討 C++ 的歷史、編程語(yǔ)言多年來(lái)的發(fā)展歷程以及它的下一步發(fā)展方向。
    的頭像 發(fā)表于 01-11 09:00 ?494次閱讀
    <b class='flag-5'>C++</b>簡(jiǎn)史:<b class='flag-5'>C++</b>是如何開始的

    C語(yǔ)言和C++那些不同的地方

    ++11標(biāo)準(zhǔn)。根據(jù)不同的標(biāo)準(zhǔn),它們的功能也會(huì)有所不同,但是越新的版本支持的編譯器越少,所以本文在討論的時(shí)候使用的C語(yǔ)言標(biāo)準(zhǔn)是C89,C++標(biāo)準(zhǔn)是C++99.我們來(lái)介紹
    的頭像 發(fā)表于 12-07 14:29 ?858次閱讀
    <b class='flag-5'>C</b>語(yǔ)言和<b class='flag-5'>C++</b><b class='flag-5'>中</b>那些不同的地方

    如何選擇創(chuàng)建c語(yǔ)言和c++

    選擇創(chuàng)建 C 語(yǔ)言和 C++ 都需要綜合考慮多個(gè)因素。在決定使用哪種語(yǔ)言之前,我們需要對(duì)這兩種語(yǔ)言的特點(diǎn)、優(yōu)缺點(diǎn)、適用場(chǎng)景、學(xué)習(xí)成本等進(jìn)行全面的了解和對(duì)比。下面是關(guān)于選擇創(chuàng)建 C 語(yǔ)言
    的頭像 發(fā)表于 11-27 15:58 ?533次閱讀

    OpenHarmony C++公共基礎(chǔ)類庫(kù)應(yīng)用案例:Thread

    OpenHarmony C++公共基礎(chǔ)類庫(kù)應(yīng)用案例:Thread 1、程序簡(jiǎn)介 該程序是基于OpenHarmony的C++公共基礎(chǔ)類庫(kù)的線程處理:Thread。 該應(yīng)用案例已在OpenHarmony
    發(fā)表于 11-22 11:50

    c++多行注釋快捷鍵

    C++,多行注釋(也稱為塊注釋)是一種用于注釋大段代碼或多個(gè)語(yǔ)句的方法。當(dāng)你希望暫時(shí)禁用一些代碼或者解釋特定部分代碼的作用時(shí),多行注釋是非常有用的。 在C++,多行注釋以 /*
    的頭像 發(fā)表于 11-22 10:24 ?7617次閱讀

    C/C++語(yǔ)言學(xué)習(xí)大全套

    電子發(fā)燒友網(wǎng)站提供《C/C++語(yǔ)言學(xué)習(xí)大全套.rar》資料免費(fèi)下載
    發(fā)表于 11-18 14:33 ?2次下載
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>語(yǔ)言<b class='flag-5'>學(xué)習(xí)</b>大全套

    探索C++的編程習(xí)慣與編程要點(diǎn)

    C++的類可以分為帶指針數(shù)據(jù)成員與不帶指針數(shù)據(jù)成員兩類,complex就屬于不帶指針成員的類。而這里要說(shuō)的字符串類String,一般的實(shí)現(xiàn)會(huì)帶有一個(gè)char *指針。帶指針數(shù)據(jù)成員的類,需要自己實(shí)現(xiàn)class三大件:拷貝構(gòu)造函數(shù)、拷貝賦值函數(shù)、
    的頭像 發(fā)表于 11-14 09:25 ?360次閱讀
    探索<b class='flag-5'>C++</b>的編程習(xí)慣與編程要點(diǎn)

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點(diǎn)問(wèn)題,讓大家領(lǐng)略現(xiàn)代C++美,掌握其中的精髓,更好地使用C++,C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《
    的頭像 發(fā)表于 10-30 16:35 ?752次閱讀
    <b class='flag-5'>C++</b>之父新作帶你勾勒現(xiàn)代<b class='flag-5'>C++</b>地圖