C++ 11右值引用

来源:互联网 发布:英语软件哪个比较好 编辑:程序博客网 时间:2024/05/21 12:41

http://www.cnblogs.com/hujian/archive/2012/02/13/2348621.html

class CMyString{public:    // 构造函数 CMyString(const char *pszSrc = NULL) {  cout << "CMyString(const char *pszSrc = NULL)" << endl;  if (pszSrc == NULL)  {   m_pData = new char[1];   *m_pData = '\0';  }  else  {   m_pData = new char[strlen(pszSrc)+1];   strcpy(m_pData, pszSrc);  } }    // 拷贝构造函数 CMyString(const CMyString &s) {  cout << "CMyString(const CMyString &s)" << endl;  m_pData = new char[strlen(s.m_pData)+1];  strcpy(m_pData, s.m_pData); }    // move构造函数 CMyString(CMyString &&s) {  cout << "CMyString(CMyString &&s)" << endl;  m_pData = s.m_pData;  s.m_pData = NULL; }    // 析构函数 ~CMyString() {  cout << "~CMyString()" << endl;  delete [] m_pData;  m_pData = NULL; }    // 拷贝赋值函数 CMyString &operator =(const CMyString &s) {  cout << "CMyString &operator =(const CMyString &s)" << endl;  if (this != &s)  {   delete [] m_pData;   m_pData = new char[strlen(s.m_pData)+1];   strcpy(m_pData, s.m_pData);  }  return *this; }    // move赋值函数 CMyString &operator =(CMyString &&s) {  cout << "CMyString &operator =(CMyString &&s)" << endl;  if (this != &s)  {   delete [] m_pData;   m_pData = s.m_pData;   s.m_pData = NULL;  }  return *this; }private: char *m_pData;};


-- 本文来源于创世软件团队博客, 原文地址: http://www.cnblogs.com/hujian/archive/2012/02/13/2348621.html

 

原创粉丝点击