歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 關於C++下深拷貝和淺拷貝的理解

關於C++下深拷貝和淺拷貝的理解

日期:2017/3/1 10:07:20   编辑:Linux編程


某些情況下我們需要將一個對象賦給另一個對象,其中就有一些值得注意的點。

淺拷貝:

在沒有進行運算符的重載時,一般情況下我們定義一個A a(1,2,3);A b;這兩個對象,我們會有 b = a; 這就是對象之間的拷貝,也就是會出現深拷貝和淺拷貝,以及一些錯誤。首先,b = a是一個淺拷貝過程就是將一些數值進行賦值操作。這就出現一個問題,如果類中含有指針,淺拷貝就會出現問題

當a對象析構時,則其指針所指向的空間也就釋放,此時b對象中的數據中的指針指向了已經釋放了的空間,這樣的指針是不合法的,會對其他程序的數據產生破壞。為了防止這類事情的發生,我們就采用運算符重載,來實現對象之間的深拷貝。。理解了這一點,我們就知道,需要同時為a,b兩個對象分配同樣大小的內存空間,將所需要的數據全部拷貝到自己的空間。對象的數據中的指針指向自己數據空間肯定是合法的。

至於運算符的重載,這個很好理解,就不一一解釋了。所想的就是這些。

Copyright © Linux教程網 All Rights Reserved