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

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

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

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

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

一.派生類不使用new

派生類是否需要為顯示定義析構函數,復制構造函數和賦值操作符呢?

不需要!

首先,來看是否需要析構函數,如果沒有定義析構函數,編譯器將定義一個不執(zhí)行任何操作的默認構造函數。實際上,派生類的默認構造函數總是要執(zhí)行一些操作:執(zhí)行自身的代碼后調用基類析構函數。因為我們假設派生類的成員不需要執(zhí)行任何特殊操作,所以默認析構函數是合適的。

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

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

二.派生類使用new。

如果派生類需要new操作,那么需要顯示定義析構函數,復制構造函數和賦值操作符。

派生類析構函數自動調用基類的構造函數,故其自身的職責是對派生類構造函數執(zhí)行工作的進行清理。

接下來看復制構造函數:

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

看賦值操作符:

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

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

1.對于析構函數,這是自動完成的;

2.對于構造函數,這是通過在初始化成員列表中調用基類的復制構造函數來完成的;如果不是這樣做,將自動調用基類的默認構造函數。

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

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

相關文章

  • C++超詳細講解內存空間分配與this指針

    C++超詳細講解內存空間分配與this指針

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

    理解C++編程中的std::function函數封裝

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

    如何用C寫一個web服務器之基礎功能

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

    C++智能指針模板應用詳細介紹

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

    C語言中條件判斷的正確使用姿勢

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

    C++中指針指向二維數組實例詳解

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

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

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

    C++ 中CloseHandle 函數--關閉一個句柄

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

    C/C++中的atan和atan2函數實例用法

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

    C++內存模型與名稱空間概念講解

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

最新評論

新闻| 冕宁县| 蓝田县| 沅江市| 车致| 虎林市| 青浦区| 台安县| 福清市| 汶上县| 无锡市| 天镇县| 虹口区| 大兴区| 贡嘎县| 德阳市| 宣城市| 富川| 卫辉市| 大洼县| 南川市| 连云港市| 石家庄市| 屏东县| 饶平县| 邯郸市| 阳春市| 基隆市| 清流县| 化州市| 酒泉市| 翁源县| 昌宁县| 航空| 兴和县| 禹城市| 武胜县| 乌苏市| 深泽县| 保德县| 呼伦贝尔市|