c++对象复制 浅复制 深复制

来源:百度知道 编辑:UC知道 时间:2024/05/14 01:12:19
谁能提供以个完整的关于 C++中的浅复制和深复制的例子。最好能是以字符串的拷贝为例。

#include<iostream>
using namespace std;
class CTest
{
public:
CTest(const CTest& test);
CTest(const char* cpData, int nLength);
const char* GetData(void);
int GetLength(void);
void SetDataPointer(const char* cpData);
void SetDataLength(int nLength);
CTest()
{
m_cpData = (char*)NULL;
m_nLength = 0;
}
~CTest()
{
if (m_nLength != 0)
{
delete m_cpData;
m_cpData = (char*)NULL;
m_nLength = 0;
}
}
private:
char* m_cpData;
int m_nLength;
};
CTest::CTest(const CTest& test)
{
m_nLength = test.m_nLength;
this->m_cpData = new char[m_nLength + 1];
strcpy(m_cpData, test.m_cpData);
}
CTest::CTest(const char* cpData, int nLength)
{
m_cpData = new char[nLength + 1];
memcpy(m_cpData, cpData, nLength);
m_nLength = nLength;
}
const char* CTest::GetDat