自己动手编写string类

自己动手编写string类

ID:1111122

大小:222.91 KB

页数:8页

时间:2017-11-07

自己动手编写string类_第1页
自己动手编写string类_第2页
自己动手编写string类_第3页
自己动手编写string类_第4页
自己动手编写string类_第5页
资源描述:

《自己动手编写string类》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、自己动手编写string类题记:人们对事物的恐惧往往源自不了解,如果你能把它写出来,还怕不会用吗?对于那些对C++标准库中的string不甚了解的读者来说,这篇文章的名称可能会引起一些混淆。标准库中的string并不是一个独立的类,而是basic_string模板类的一个特化版本:typedefbasic_string,allocator>string;我们今天要做的事情是,模仿标准库string的行为,编写一个属于自己的简单的string类。为了与标准库中的string相区分,我们将自己编写的类命名为MyString。声明篇数据成员

2、方面我们需要一个char型指针来保存字符串,还需要一个size_t型变量来保存字符串的长度。显然,它们是应该被封装的,我们将它们的权限设置为private。classMyString{private:size_tstrLength;char*p_str;};下面我们来声明成员函数,当然,还有一些非成员函数。想一想我们定义一个string变量有哪几种方式,一般情况下,以下四种方式比较常见://调用默认构造函数strings1;//将s2初始化为s1的一个副本strings2(s1);orstrings2=s1;//将s3初始化为一个字符串字面值副本strings3("hello");orstr

3、ings3="hello";//将s4初始化为字符'a'的n个副本strings4(n,'a');下面给出相应的声明://构造函数MyString();MyString(constMyString&);MyString(constchar*);MyString(constsize_t,constchar);类中存在指针数据成员,我们当然需要自己定义一个析构函数。//析构函数~MyString();一些基本的属性。size_tlength();//字符串的长度boolempty();//字符串是否为空string中有个c_str()成员函数,返回C风格字符串的指针,我们也加上这个函数。cons

4、tchar*c_str();//返回C风格字符串的指针下面该写操作符了,我们知道,string支持的操作符特别多,这些都是通过操作符的重载实现的。//读写操作符friendostream&operator<<(ostream&,constMyString&);friendistream&operator>>(istream&,MyString&);//‘+’操作符friendMyStringoperator+(constMyString&,constMyString&);//比较操作符friendbooloperator==(constMyString&,constMyString&);fr

5、iendbooloperator!=(constMyString&,constMyString&);friendbooloperator<(constMyString&,constMyString&);friendbooloperator<=(constMyString&,constMyString&);friendbooloperator>(constMyString&,constMyString&);friendbooloperator>=(constMyString&,constMyString&);//下标操作符char&operator[](constsize_t);constch

6、ar&operator[](constsize_t)const;//赋值操作符MyString&operator=(constMyString&);//'+='操作符MyString&operator+=(constMyString&);有几个问题需要说明。1、IO操作符不可以定义为类的成员函数,否则,左操作数只能是该类类型的对象。MyStrings;s<

7、况,否则,类的const对象将无法使用下标。最后,再写一些操作函数。标准库string的操作函数为数众多,且存在大量的重载版本。这里出于篇幅考虑,选择几个代表性的函数来实现。//子串操作MyStringsubstr(size_t,size_t);//添加操作MyString&append(constMyString&);//插入操作MyString&insert(size_t,constMyString&);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。