最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

一.派生類不使用new

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

不需要!

首先,來看是否需要析構(gòu)函數(shù),如果沒有定義析構(gòu)函數(shù),編譯器將定義一個(gè)不執(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ù)制,這對(duì)于動(dòng)態(tài)內(nèi)存分配來說是不合適的,但對(duì)于新的派生類的成員來說是合適的。因此只需要考慮繼承的基類的對(duì)象。要知道,成員復(fù)制將根據(jù)數(shù)據(jù)類型采用相應(yīng)的復(fù)制方式,因此復(fù)制類成員或繼承的類組件時(shí),則是使用該類的復(fù)制構(gòu)造函數(shù)完成的。所以派生類的默認(rèn)復(fù)制構(gòu)造函數(shù)使用基類的顯示復(fù)制構(gòu)造函數(shù)來復(fù)制派生類對(duì)象的基類成員部分。因此,默認(rèn)復(fù)制構(gòu)造函數(shù)對(duì)于新的派生類而言是合適的。

對(duì)于賦值來說,同樣道理。

二.派生類使用new。

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

派生類析構(gòu)函數(shù)自動(dòng)調(diào)用基類的構(gòu)造函數(shù),故其自身的職責(zé)是對(duì)派生類構(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)基類和派生類都采用動(dòng)態(tài)內(nèi)存分配時(shí),派生類的析構(gòu)函數(shù),復(fù)制構(gòu)造函數(shù)以及賦值操作符都必須使用想用的基類方法來處理基類元素。這種要求是通過三種不同的方式來滿足的。

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

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

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

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

相關(guān)文章

  • C++超詳細(xì)講解內(nèi)存空間分配與this指針

    C++超詳細(xì)講解內(nèi)存空間分配與this指針

    this?指針在C++類和對(duì)象中是個(gè)很方便實(shí)用的關(guān)鍵字,可以簡(jiǎn)化對(duì)象成員屬性的調(diào)用,使代碼表達(dá)的含義更加準(zhǔn)確;在之前的學(xué)習(xí)中我們都可以判斷變量所占內(nèi)存空間大小,那么我們創(chuàng)建的類對(duì)象所占的內(nèi)存空間怎么計(jì)算呢?想知道this的妙用和類對(duì)象占用的內(nèi)存空間就來跟我學(xué)習(xí)吧
    2022-05-05
  • 理解C++編程中的std::function函數(shù)封裝

    理解C++編程中的std::function函數(shù)封裝

    這篇文章主要介紹了理解C++編程中的std::function函數(shù)封裝,std::function是C++11標(biāo)準(zhǔn)中的新特性,需要的朋友可以參考下
    2016-04-04
  • 如何用C寫一個(gè)web服務(wù)器之基礎(chǔ)功能

    如何用C寫一個(gè)web服務(wù)器之基礎(chǔ)功能

    C語言是一門很基礎(chǔ)的語言,程序員們對(duì)它推崇備至,本文將帶著大家來看一下,如何用C寫一個(gè)web服務(wù)器。
    2021-05-05
  • C++智能指針模板應(yīng)用詳細(xì)介紹

    C++智能指針模板應(yīng)用詳細(xì)介紹

    從比較簡(jiǎn)單的層面來看,智能指針是RAII(Resource Acquisition Is Initialization,資源獲取即初始化)機(jī)制對(duì)普通指針進(jìn)行的一層封裝。這樣使得智能指針的行為動(dòng)作像一個(gè)指針,本質(zhì)上卻是一個(gè)對(duì)象,這樣可以方便管理一個(gè)對(duì)象的生命周期
    2022-08-08
  • C語言中條件判斷的正確使用姿勢(shì)

    C語言中條件判斷的正確使用姿勢(shì)

    在C語言中,有三種條件判斷結(jié)構(gòu):if語句、if-else語句和switch語句,這篇文章主要來和大家講解一下它們的正確使用姿勢(shì),需要的可以參考一下
    2023-05-05
  • C++中指針指向二維數(shù)組實(shí)例詳解

    C++中指針指向二維數(shù)組實(shí)例詳解

    這篇文章主要介紹了C++中指針指向二維數(shù)組實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法

    C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法

    這篇文章講給大家詳細(xì)介紹一下C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法,inotify是一種異步文件監(jiān)控機(jī)制,文章通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-08-08
  • C++ 中CloseHandle 函數(shù)--關(guān)閉一個(gè)句柄

    C++ 中CloseHandle 函數(shù)--關(guān)閉一個(gè)句柄

    這篇文章主要介紹了C++ 中CloseHandle 函數(shù)--關(guān)閉一個(gè)句柄的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C/C++中的atan和atan2函數(shù)實(shí)例用法

    C/C++中的atan和atan2函數(shù)實(shí)例用法

    在本篇文章里小編給大家分享的是一篇關(guān)于C/C++中的atan和atan2函數(shù)實(shí)例用法相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • C++內(nèi)存模型與名稱空間概念講解

    C++內(nèi)存模型與名稱空間概念講解

    這篇文章主要介紹了C++內(nèi)存模型與名稱空間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01

最新評(píng)論

元氏县| 汽车| 体育| 普兰县| 云梦县| 盐津县| 平果县| 元阳县| 榕江县| 凤庆县| 屏东县| 古浪县| 景东| 水城县| 三亚市| 平谷区| 连平县| 吴旗县| 密山市| 昆明市| 曲周县| 兴义市| 田林县| 三河市| 饶阳县| 措勤县| 蒲江县| 岑溪市| 南城县| 克东县| 轮台县| 乐昌市| 宜兴市| 昌都县| 海阳市| 任丘市| 盐源县| 金山区| 巴楚县| 利辛县| 包头市|