编写类String的构造函数、析构函数和赋值函数,已知类String的原型为
class String{public:String(const char* str = NULL); //普通构造函数String(const String& other); //拷贝构造函数~String(void); //析构函数String& operate =(const String& other); //赋值函数private:char *m_data; //用于保存字符串}
普通构造函数
String::String(const char* str){if(NULL == str){m_data = new char[1]; //对空字符串自动申请存放结束标志'\0'的空*m_data = '\0';}else{int length = strlen(str);m_data = new char[length+1]; //分配m_data的空间strcpy(m_data,str);}}
拷贝构造函数
String::String(const String& other){ int length = strlen(other.m_data); m_data = new char[length+1]; //分配m_data的空间 strcpy(m_data,other.m_data);}
析构函数
String::~String(void){ delete []data; //delete data; //两种都可以}
赋值函数
String &String::operate = (const String &other){ if(this == &other) //检查自赋值 return *this; delete [] m_data;int length = strlen(other.m_data); m_data = new char[length+1]; //分配m_data的空间 strcpy(m_data,other.m_data); return *this; //赋值函数毕加上,返回本对象引用}
能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C++基本功的60%以上!
转自: