C++拷贝构造函数的几个细节(二)

2013-10-17 09:06:22 · 作者: · 浏览: 301

 

  Test2(){ m_pChar = NULL;}

  Test2(char *pChar) { m_pChar = pChar;}

  Test2(int num)

  {

  m_pChar = new char[num];

  for(int i = 0; i< num; ++i)

  m_pChar[i] = 'a';

  m_pChar[num-1] = '\0';

  }

  Test2(const Test2& test)

  {

  char *pCharT = m_pChar;

  m_pChar = new char[strlen(test.m_pChar)];

  strcpy(m_pChar, test.m_pChar);

  if(!pCharT)

  delete []pCharT;

  }

  Test2& operator = (const Test2& test)

  {

  if(this == &test)

  return *this;

  char *pCharT = m_pChar;

  m_pChar = new char[strlen(test.m_pChar)];

  strcpy(m_pChar, test.m_pChar);

  if(!pCharT)

  delete []pCharT;

  return *this;

  }

  private:

  char *m_pChar;

  };

  int main(int argc, char* argv[])

  {

  const Test1 ts(1); // Test1()

  const Test1* p_ts = &ts;

  const Test1 ts2(ts); //Test(const Test1& test)

  const Test1 ts3 = ts; //Test(const Test1& test)

  Test1 ts4; ts4 = ts;  //Test1& operator = (const Test1& test)

  Test2 t(5);

  Test2 t2(t);

  Test2 t3 = t2;

  Test2 t4; t4 = t;

  return 0;

  }