这些是面试时经常会遇到的问题,这里统一实现之,重要的是注意copy构造函数以及赋值函数。 源代码如下: //head class CExample { public: CExample(); CExample(const char*); virtual ~CExample(); CExample(const CExample&); CExample& operator = (const CExample&); private: char *m_pData; }; //.cpp CExample::CExample() { m_pData = NULL; } CExample::CExample( const CExample& obj) { int iLen = strlen(obj.m_pData); m_pData = new char[iLen + 1]; strcpy(m_pData, obj.m_pData); } CExample::CExample( const char* obj) { int iLen = strlen(obj); m_pData = new char[iLen + 1]; strcpy(m_pData, obj); } CExample::~CExample() { if (m_pData != NULL) { delete []m_pData; m_pData = NULL; } } CExample& CExample::operator=( const CExample& obj) { if (this == &obj) { return *this; } if (m_pData != NULL) { delete []m_pData; m_pData = NULL; } int iLen = strlen(obj.m_pData); m_pData = new char[iLen + 1]; strcpy(m_pData, obj.m_pData); return *this; }