种String的构造函数、析构函数和赋值函数
类String的构造函数、析构函数和赋值函数
赋值函数是在用一个类的实例去赋值给另一个实例的时候调用的,如
类String的构造函数、析构函数和赋值函数的原型分别如下:
拷贝构造函数和赋值函数的区别:看看下面代码,仔细想想两者的区别。
拷贝构造函数是在定义一个对象的时候调用的,如
Class String { //.... }; String a=b;//b为一个String类型的对象 或者 String a(b);
赋值函数是在用一个类的实例去赋值给另一个实例的时候调用的,如
String a; a=b;
类String的构造函数、析构函数和赋值函数的原型分别如下:
class String { public: String(const char *str=NULL); //构造函数 String(const String &other); //拷贝构造函数 ~String(void); //析构函数 String &operator=(const String &other); //赋值函数 private: char *m_data; //保存字符串 }; //constructor String::String(const char *str) { if(str==NULL) { m_data=new char[1]; m_data[0]='\0'; } else { int len=strlen(str); m_data=new char[len+1]; assert(m_data!=NULL); strcpy(m_data,str); } } //copy constructor:使用在定义一个类型变量的时候 String::String(const String &other) { int length=strlen(other.m_data); m_data=new char[length+1]; assert(m_data!=NULL); strcpy(m_data,other.m_data); } //destructor String::~String(void) { delete []m_data; } //赋值函数:使用在把一个类的实例赋值给另一个类的实例 String &String::operator = (const String &other) { if(this==&other) { return *this; } delete []m_data; int length=strlen(other.m_data); m_data=new char[length+1]; assert(m_data!=NULL); strcpy(m_data,other.m_data); return *this; }