對深淺拷貝的一點認識

2021-07-12 07:16:14 字數 852 閱讀 6412

這學期開了c++課程,上課不認真聽課的我,選擇敲下老師課件中所有**來學習,到建構函式模組認識了有個叫做「拷貝建構函式」的東西,其中深淺拷貝令我感到困惑,在上網查閱了相關資料以及讀過各博主的博文之後,有感想體會如下,以供日後查缺補漏。

重所周知的拷貝建構函式(複製建構函式)有三個用途:

1、乙個物件作為函式引數,以值傳遞的方式傳入函式體;

2、乙個物件作為函式返回值,以值傳遞的方式從函式返回;

3、乙個物件用於給另乙個物件進行初始化(賦值初始化)。

拷貝建構函式的格式為:

類名 ( const 類名 & 物件名 )

因為如果我們不在程式中自己定義拷貝建構函式的話,編譯器會自動為我們生成乙個預設的拷貝建構函式,這個拷貝建構函式的功能很簡單:在物件之間進行簡單的值傳遞。(這也就是所說的「淺拷貝」)

所以我覺著一般情況下可以不寫拷貝建構函式。

除非—>類中涉及動態成員。此時,應當自己定義拷貝建構函式,以免程式出錯。**如下:

#include

using

namespace

std;

class point

~point() //析構函式

int * get() //外部介面,返回私有的成員p

point(point &p) //拷貝建構函式

};int main()

執行程式不難發現,淺拷貝時,p2的成員p並沒有指向新的記憶體空間,而是進行了簡單的指標賦值,而深拷貝時,是將p2的指標指向了新的記憶體單元,並對新的記憶體單元進行了賦值。

**轍止,僅供自己日後查缺補漏,希望論壇裡各位前輩能多指教

對暴庫的一點認識

去年的時候曾經有一段時間研究過ie雙解碼,所以對暴庫有一定的認識,前些天終於收到黑客的雜誌,裡面看了一篇臨的文章,下面我也談談個人對那篇文章的認識,這裡要說的是,大家如果再深入點研 究下去,就會發現,暴庫的利用不只是這麼簡單,還會有更多可以用的東東。暴庫的方式有多種多樣,我知道的就有3種以上,常見的...

對RunTime的一點認識

runtime簡稱執行時,是執行時的一些機制,最主要的是訊息機制。因為oc中只有物件能傳送訊息,所以一般以objc開頭。對於c語言,函式在編譯是就會決定呼叫,而oc中不會,oc的函式屬於一種動態呼叫。舉例說明,oc中只宣告乙個方法並不去實現它,然後直接呼叫,編譯奪得時候不會報錯,只有在執行時報錯。類...

對介面的一點認識

以前雖然老師一直反覆強調介面的重要,並且要求我們寫任何程式之前都嘗試先寫介面,但是由於自己淺顯的認識,一直覺得寫介面就是多此一舉,自己先寫好介面,寫好方法,在繼承去實現方法,這不是多此一舉嗎?直接在類裡寫完所有方法不就完了嗎?但隨著學習的繼續,越來學懂得介面的重要性,並且也嘗試寫介面,這裡,想先寫一...