亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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++ 使用PrintWindow實現窗口截圖功能

    C++ 使用PrintWindow實現窗口截圖功能

    這篇文章主要介紹了C++ 如何使用PrintWindow實現窗口截圖功能,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • C語言指針詳解

    C語言指針詳解

    這篇文章非常詳細的講解了C語言中指針的概念,包含多種方法,多種定義,全面的說明了C語言的特性
    2021-06-06
  • C++11 智能指針之shared_ptr代碼詳解

    C++11 智能指針之shared_ptr代碼詳解

    這篇文章主要介紹了 C++11 智能指針之shared_ptr的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 深入解析C++程序中激發(fā)事件和COM中的事件處理

    深入解析C++程序中激發(fā)事件和COM中的事件處理

    這篇文章主要介紹了深入解析C++程序中激發(fā)事件和COM中的事件處理,是C++事件操作的基礎,需要的朋友可以參考下
    2016-01-01
  • C++編程中__if_exists與__if_not_exists語句的用法

    C++編程中__if_exists與__if_not_exists語句的用法

    這篇文章主要介紹了C++編程中__if_exists與__if_not_exists語句的用法,是C++中用于判斷指定的標識符是否存在的基礎的條件判斷語句,需要的朋友可以參考下
    2016-01-01
  • C語言實現猜數字

    C語言實現猜數字

    這篇文章主要為大家詳細介紹了C語言實現猜數字小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • C++實現哈夫曼樹編碼解碼

    C++實現哈夫曼樹編碼解碼

    這篇文章主要為大家詳細介紹了C++實現哈夫曼樹編碼解碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++實現簡單迷宮游戲

    C++實現簡單迷宮游戲

    這篇文章主要為大家詳細介紹了C++實現簡單迷宮游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • [c++]變量聲明與定義的規(guī)則詳解

    [c++]變量聲明與定義的規(guī)則詳解

    這篇文章主要介紹了[c++]變量聲明與定義的規(guī)則詳解,對于學習c++的朋友來說這是一個很細膩的文章,代碼完整,需要的朋友可以參考下
    2021-04-04
  • 淺談C++中replace()方法

    淺談C++中replace()方法

    C++編程語言中的string應用方式多樣化,每一種應用方式都能幫助我們提實現特定的功能需求。在這里我們將會為大家詳細介紹一下其中一個比較重要的用法,有關C++ replace()函數的應用方式,需要的朋友可以參考下
    2015-11-11

最新評論