200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 类string的构造函数 拷贝构造函数和析构函数

类string的构造函数 拷贝构造函数和析构函数

时间:2020-10-26 11:37:43

相关推荐

类string的构造函数 拷贝构造函数和析构函数

原文:/Laokong-ServiceStation/archive//04/19/402.html

类string的构造函数、拷贝构造函数和析构函数

引用/life02/archive//03/07/96085.html 在这个帖子的基础上稍微添加修改了点内容。

String 类的原型如下

class String

{

public:

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

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

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

String& operator=(const String &other); //等号操作符重载

ShowString();

private:

char *m_data; //指针

};

String::~String()

{

delete [] m_data; //析构函数,释放地址空间

}

String::String(const char *str)

{

if (str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'\0';

{

m_data=new char[1];

*m_data='\0';

}

else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;

{

int length=strlen(str);

m_data=new char[length+1];

strcpy(m_data,str);

}

}

String::String(const String &other)//拷贝构造函数,功能与构造函数类似。

{

int length=strlen(other.m_data);

m_data=new [length+1];

strcpy(m_data,other.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 [length+1];

strcpy(m_data,other.m_data);

return *this;

}

String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;

{

cout<<this->m_data<<endl;

}

main()

{

String AD;

char * p="ABCDE";

String B(p);

AD.ShowString();

AD=B;

AD.ShowString();

}

1. strCopy 函数可以为标准库函数 char *strcpy(char *dest, const char *src);

需要#inculde <string.h>

2.参考连接:

高质量C++C编程指南/develop/c&c++/c/c.htm

字符串函数/forum/clib/string/strcpy.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。