您的位置:首页 > 其它

类String的构造函数、拷贝构造函数、析构函数、赋值函数

2015-09-18 09:27 330 查看
已知类String的原型为:

class String

{

public:

String(const char *str=NULL); //普通构造函数

String(const String &other); //拷贝构造函数

~String(void); //析构函数

String & operator =(const String &other); //赋值函数

private:

char *m_data; //用于保存字符串

};

编写String的上述4个函数

/* 析构函数 */

String::~String(void)

{

delete [] m_data;//由于m_data是内部数据类型,也可以写成delete m_data;

}

/* 普通构造函数 */

String::String(const char *str)

{

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)

{

int len=strlen(other.m_data);

m_data= new char[len+1];//m_data 只有申请了空间才有指向,没申请之前只是一个指针,不指向特定内存空间

if(m_data!=NULL)

strcpy(m_data,other.m_data);

}

/* 赋值函数 */

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

{

if(this ==&other)

return *this;

delete [] m_data;// 释放原有的内存资源

int len=strlen(other.m_data);

m_data= new char[len+1];// 分配新的内存资源

if(m_data!=NULL)

strcpy(m_data,other.m_data);

return *this;//返回本对象的引用

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