您的位置:首页 > 其它

拷贝构造函数与赋值构造函数

2016-04-29 21:48 399 查看
#include<iostream>

#include<cstring>

using namespace std;

class String

{

private:

 char *m_data;

public:

 String(const char *str);

 String(const String &other);

 String & operator=(const String &other);

 ~String();

};

String::String(const char *str)

{

 cout<<"自定义构造函数"<<endl;

 if(str == NULL) {

  m_data = new char[1];

  m_data = '\0';

 } else {

  int len = strlen(str);

  m_data = new char[len + 1];

  strcpy(m_data,str);

 }

}

String::String(const String &other)

{

 cout<<"自定义复制构造函数"<<endl;

 int len = strlen(other.m_data);

 m_data = new char[len + 1];

 strcpy(m_data,other.m_data);

}

String & String::operator=(const String &other)

{

 cout<<"自定义赋值函数"<<endl;

 if(this == &other)

  return *this;

 else {

  delete [] m_data;

  int len = strlen(other.m_data);

  m_data = new char[len + 1];

  strcpy(m_data,other.m_data);

  return *this;

 }

}

String::~String()

{

 delete [] m_data;

}

int main()

{

 cout << "a(\"abc\")" << endl;

 String a("abc");

 cout << "b(\"cde\")" << endl;

 String b("cde");

 cout << " d = a" << endl;

 String d = a;

 cout << "c(b)" << endl;

 String c(b);

 cout << "c = a" << endl;

 c = a;

 getchar();

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: