淺拷貝
array.h
class array;
array.cpp
#include #include "array.h"
using namespace std;
array::array()
array::array(const array& arr)
array::~array()
void array::setcount(int c)
int array::getcount()
main.cpp
#include #include #include "array.h"
using namespace std;
int main()
淺拷貝可能帶來的錯誤
array.h
class array;
array.cpp
#include #include "array.h"
using namespace std;
array::array(int c)
array::array(const array& arr)
array::~array()
void array::setcount(int c)
int array::getcount()
void array::printaddr()
main.cpp
#include #include #include "array.h"
using namespace std;
int main()
結束時出錯,因為arr1和arr2中的m_parr都指向一塊記憶體,而兩個物件的析構函式被呼叫的時候要釋放兩次一樣的記憶體,所以會造成系統崩潰。
深拷貝array.cpp
#include #include "array.h"
using namespace std;
array::array(int c)
cout << "array" << endl;
}array::array(const array& arr)
cout << "array&" << endl;
}array::~array()
void array::setcount(int c)
int array::getcount()
void array::printaddr()
C 深拷貝 與 淺拷貝
最近在寫一些c 程式,遇到個問題,記憶體會出錯,查了一些材料,終於發現問題所在了,原來碰到了傳說中的深拷貝和淺拷貝問題了,檢視一些材料,現在對這個問題做個總結 在類定義中,預設是淺拷貝,即 位拷貝 用在基本類中或者一些沒有指標的自定義型別中沒有一點問題,但是當遇到含有指標變數的自定義型別的時候,就會...
C 淺拷貝與深拷貝
淺拷貝 shallow copy 指的是當物件的字段被拷貝的時候,字段應用的物件不會被拷貝。深拷貝是對物件例項當中的字段引用的物件也進行拷貝的一種方式。淺拷貝可以通過將類實現介面icloneable class myclass icloneable 舉個簡單的例項 using system usin...
c 深拷貝與淺拷貝
對於普通型別的物件來說,它們之間的複製是很簡單的,例如 int a 88 int b a 而類物件與普通物件不同,類物件內部結構一般較為複雜,存在各種成員變數。下面看乙個類物件拷貝的簡單例子。iostream using namespace std class cexample void show ...