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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++之繼承中構造和析構學習的總結

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 16:10 ? 次閱讀

在我們前面學習過類中的構造函數(shù),以及析構函數(shù),那么自然而然,在繼承關系中,必然是存在著析構和構造著。

一、子類對象的構造

1、問題的引出

如何初始化父類成員?

父類構造函數(shù)和子類構造函數(shù)有什么關系?

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

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

--必須對繼承而來的成員進行初始化,那么怎樣初始化呢?這里有兩種方式:

-直接通過初始化列表或者賦值的方式進行初始化

-調用父類構造函數(shù)進行初始化

3、父類構造函數(shù)在子類中的調用方式

默認調用

-適用于無參構造函數(shù)和使用默認參數(shù)的構造函數(shù)

顯示調用

-通過初始化列表進行調用

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

實踐代碼模板:

代碼實踐:

輸出結果:

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

4、構造規(guī)則

子類對象在創(chuàng)建時會首先調用父類的構造函數(shù)

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

父類構造函數(shù)可以被隱式調用或者顯示調用

5、對象創(chuàng)建時構造函數(shù)的調用順序

(1)調用父類的構造函數(shù)

(2)調用成員變量的構造函數(shù)

(3)調用類自身的構造函數(shù)

總結:先父母,后客人,再自己

代碼實踐:

輸出結果:

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

二、子類對象的析構

1、析構函數(shù)的調用順序與構造函數(shù)相反

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

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

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

代碼實踐:

輸出結果:

三、總結:

子類對象在創(chuàng)建時需要調用父類構造函數(shù)進行初始化

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

父類構造函數(shù)顯示調用需要在初始化列表中進行

子類對象在銷毀時需要調用父類析構函數(shù)進行清理

析構順序與構造順序對稱相反

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

    關注

    7

    文章

    514

    瀏覽量

    44009
  • C++
    C++
    +關注

    關注

    21

    文章

    2085

    瀏覽量

    73302
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

    Microsoft開發(fā)的一種面向對象的事件驅動編程語言。它的設計目標是簡化編程過程,讓初學者也能快速上手。與相比,C++語言是一種通用的、面向對象的編程語言,其設計目標是提供高性能的系統(tǒng)級編程。 語法: VB語言的語法較為簡單,使用了很多可讀性強的關鍵詞,如“
    的頭像 發(fā)表于 02-01 10:20 ?1522次閱讀

    C++簡史:C++是如何開始的

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

    C語言和C++那些不同的地方

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

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

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

    OpenHarmony C++公共基礎類庫應用案例:Thread

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

    c++多行注釋快捷鍵

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

    C/C++語言學習大全套

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

    探索C++的編程習慣與編程要點

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

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

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

    迅為RK3568開發(fā)板QT學習手冊

    : 1.3.4類的繼承 1.4 函數(shù)的重載 1.5 構造函數(shù)和函數(shù) 1.6 虛函數(shù)和純虛函數(shù) 第2章 Qt安裝 2.1 Windows下QT安裝 2.1.1 QtCreator的安
    發(fā)表于 10-25 10:29

    C++程序設計精簡版

    章 指針第 7 章 自定義數(shù)據(jù)類型 第 3 篇 基于對象的程序設計第 8 章 類和對象第 9 章 關于類和對象的進一步討論第 10 章 運算符重載 第 4 篇 面向對象的程序設計第 11 章 繼承與派生第 12 章 多態(tài)性與虛函數(shù)第 13 章 輸入輸出流第 14 章 C++
    發(fā)表于 10-09 07:26

    常用ARM指令集和匯編

    delete 會調用對象的函數(shù),和 new 對應 free 只會釋放內存,new 調用構造函數(shù)。malloc與 free 是 C++/C
    發(fā)表于 09-25 06:53