类String的构造函数、析构函数和赋值函数
拷贝构造函数和赋值函数的区别:看看下面代码,仔细想想两者的区别。
拷贝构造函数是在定义一个对象的时候调用的,如
class String{public:String(const char *str=NULL);//构造函数String(const String &other);//拷贝构造函数~String(void);//析构函数String &operator=(const String &other);//赋值函数private:char *m_data;//保存字符串};//constructorString::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);}//destructorString::~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;}