C++中提供了对象拷贝的功能,在进行拷贝时,如果我们没有特意去写拷贝构造函数,系统会自动为我们生成,但有些时候,比如对象成员中含有指针变量的时候,就需要防止拷贝出的构造函数中的指针变量与我们的模板对象成员变量中的指针指向同一块地址,此时就需要进行深拷贝,深拷贝会将两块内存中的信息进行拷贝,而不仅仅是值的拷贝(浅拷贝)。
浅拷贝会直接将值进行复制:
class One
{
public:
One(){a=5;}
void setA(int _a){a=_a;}
int getA(){ return a;}
private:
int a;
};
int main()
{
One on1;
One on2=on1;
cout << on2.getA() << endl;
return 0;
}
结果是5,这里的a是一个整形变量,系统会自动为它申请空间。
深拷贝:
#include<iostream>
#include<stdlib.h>
using namespace std;
class Array
{
public:
Array(int count);
Array(const Array & arr);
~Array();
void setCount(int count);
int getCount();
void printAddr();
void printArr();
private:
int m_iCount;
int *m_pArr;
};
Array::Array(int count)
{
m_iCount = count;
m_pArr &