欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ 中繼承與動態(tài)內(nèi)存分配的詳解

 更新時間:2017年08月21日 08:39:33   投稿:lqh  
這篇文章主要介紹了C++ 中繼承與動態(tài)內(nèi)存分配的詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下

C++ 中繼承與動態(tài)內(nèi)存分配的詳解

繼承是怎樣與動態(tài)內(nèi)存分配進(jìn)行互動的呢?例如,如果基類使用動態(tài)內(nèi)存分配,并重新定義賦值和復(fù)制構(gòu)造函數(shù),這將怎樣影響派生類的實(shí)現(xiàn)呢?這個問題的答案取決于派生類的屬性。如果派生類也使用動態(tài)內(nèi)存分配,那么就需要學(xué)習(xí)幾個新的小技巧。下面來看看這兩種情況:

一.派生類不使用new

派生類是否需要為顯示定義析構(gòu)函數(shù),復(fù)制構(gòu)造函數(shù)和賦值操作符呢?

不需要!

首先,來看是否需要析構(gòu)函數(shù),如果沒有定義析構(gòu)函數(shù),編譯器將定義一個不執(zhí)行任何操作的默認(rèn)構(gòu)造函數(shù)。實(shí)際上,派生類的默認(rèn)構(gòu)造函數(shù)總是要執(zhí)行一些操作:執(zhí)行自身的代碼后調(diào)用基類析構(gòu)函數(shù)。因?yàn)槲覀兗僭O(shè)派生類的成員不需要執(zhí)行任何特殊操作,所以默認(rèn)析構(gòu)函數(shù)是合適的。

再看復(fù)制構(gòu)造函數(shù)。默認(rèn)復(fù)制構(gòu)造函數(shù)執(zhí)行成員復(fù)制,這對于動態(tài)內(nèi)存分配來說是不合適的,但對于新的派生類的成員來說是合適的。因此只需要考慮繼承的基類的對象。要知道,成員復(fù)制將根據(jù)數(shù)據(jù)類型采用相應(yīng)的復(fù)制方式,因此復(fù)制類成員或繼承的類組件時,則是使用該類的復(fù)制構(gòu)造函數(shù)完成的。所以派生類的默認(rèn)復(fù)制構(gòu)造函數(shù)使用基類的顯示復(fù)制構(gòu)造函數(shù)來復(fù)制派生類對象的基類成員部分。因此,默認(rèn)復(fù)制構(gòu)造函數(shù)對于新的派生類而言是合適的。

對于賦值來說,同樣道理。

二.派生類使用new。

如果派生類需要new操作,那么需要顯示定義析構(gòu)函數(shù),復(fù)制構(gòu)造函數(shù)和賦值操作符。

派生類析構(gòu)函數(shù)自動調(diào)用基類的構(gòu)造函數(shù),故其自身的職責(zé)是對派生類構(gòu)造函數(shù)執(zhí)行工作的進(jìn)行清理。

接下來看復(fù)制構(gòu)造函數(shù):

DerivedClass::DerivedClass(const DerivedClass& de):BaseClass(de)
{
//.......
}

看賦值操作符:

DerivedClass::operator=(const DerivedClass& de)
{
if(this == &de) return *this;
BaseClass::operator=(de);
//..........
}

總之,當(dāng)基類和派生類都采用動態(tài)內(nèi)存分配時,派生類的析構(gòu)函數(shù),復(fù)制構(gòu)造函數(shù)以及賦值操作符都必須使用想用的基類方法來處理基類元素。這種要求是通過三種不同的方式來滿足的。

1.對于析構(gòu)函數(shù),這是自動完成的;

2.對于構(gòu)造函數(shù),這是通過在初始化成員列表中調(diào)用基類的復(fù)制構(gòu)造函數(shù)來完成的;如果不是這樣做,將自動調(diào)用基類的默認(rèn)構(gòu)造函數(shù)。

3.對于復(fù)制操作符,這是通過使用作用域解析操作符顯示的調(diào)用基類的賦值操作符來完成了。

以上就是C++ 中繼承與動態(tài)內(nèi)存分配的詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 解析C++編程中的#include和條件編譯

    解析C++編程中的#include和條件編譯

    這篇文章主要介紹了解析C++編程中的#include和條件編譯,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C++傳值、傳址、傳引用的區(qū)別和選擇小結(jié)

    C++傳值、傳址、傳引用的區(qū)別和選擇小結(jié)

    參數(shù)傳遞有傳值、傳址和傳引用這三種,本文主要介紹了C++傳值、傳址、傳引用的區(qū)別和選擇小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • 詳解C++ bitset用法

    詳解C++ bitset用法

    這篇文章主要介紹了C++ bitset用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C++獲取當(dāng)前系統(tǒng)時間的方法總結(jié)

    C++獲取當(dāng)前系統(tǒng)時間的方法總結(jié)

    這篇文章主要介紹了C++獲取當(dāng)前系統(tǒng)時間的方法,實(shí)例總結(jié)了四個獲取系統(tǒng)時間的方法,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • Qt實(shí)現(xiàn)高準(zhǔn)確率的語音識別

    Qt實(shí)現(xiàn)高準(zhǔn)確率的語音識別

    Vosk是一個開源的語音識別工具,支持中英文及多種語言,具備離線識別能力,且不依賴互聯(lián)網(wǎng),本文就來聊聊如何使用Vosk API在C++中進(jìn)行中英文識別吧
    2024-11-11
  • C/C++實(shí)操True and false詳解

    C/C++實(shí)操True and false詳解

    這篇文章主要給大家介紹了關(guān)于Python中常用的數(shù)據(jù)類型bool(布爾)類型的兩個值:True和False的相關(guān)資料,通過示例代碼給大家進(jìn)行了解惑,讓對這兩個值有所疑惑的朋友們能有起到一定的幫助,需要的朋友下面來一起看看吧。
    2021-09-09
  • C語言實(shí)現(xiàn)三子棋實(shí)例代碼

    C語言實(shí)現(xiàn)三子棋實(shí)例代碼

    大家好,本篇文章主要講的是C語言實(shí)現(xiàn)三子棋實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Linux下C語言實(shí)現(xiàn)工廠模式方式

    Linux下C語言實(shí)現(xiàn)工廠模式方式

    這篇文章主要介紹了Linux下C語言實(shí)現(xiàn)工廠模式方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Qt計時器使用方法詳解

    Qt計時器使用方法詳解

    這篇文章為大家詳細(xì)主要介紹了Qt計時器的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++實(shí)現(xiàn)大數(shù)相乘的算法

    C++實(shí)現(xiàn)大數(shù)相乘的算法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)大數(shù)相乘的算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論