- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七 字符串类的构建(一)
12电本 张平建 3121004152
【实验类型】综合性实验 【实验课时】2学时
【实验目的】
本实验目的是通过构建字符串类使学生掌握:
C++中类的组成与定义;
对象的定义与对象成员的访问;
掌握构造函数与析构函数的定义与使用;
构造函数的重载;
【实验提要】
设计一个字符串类,取名为String,并完成以下工作:
定义数据成员;
提示:只需定义一个字符指针成员。
定义带默认参数的构造函数(同时完成字符指针类型向类类型的转换);
定义拷贝构造函数;
定义析构函数;
定义字符串拷贝函数——StrCpy;
定义字符串输出函数 ToStr ing
定义主调函数,并测试上面的函数。
注:可以根据具体的思路,添加适当的成员函数。如果成员函数实现了一个对外的行为, 则需要定义为公有成员,否则则要定义为私有成员。
【实验要求】
必须做好实验预习,并书面完成实验提要中的要求。实验时对预习完成的书面内容 进行验证。
不使用C/C++库函数,如果使用库函数完成,实验成绩按90%计算。
注意命名规范,命名不规范的,实验成绩酌情减分。
要正确地定义每一个函数的原型。就是要注意函数的参数须定义几个,每个参数的 类型是什么,函数的返回值是什么。
主调函数中要对类的每一个公有函数成员进行访问,并输岀有提示的正确的结果。
不要把所有的函数都定义为内联函数。
对每一个函数的定义,要注意边界条件,并进行合适的处理。
【实验过程提示】
启动Visual Studio C++ 6.0程序。
选择“文件” I “新建”,打开“新建”对话框,选择新建“C++ Source File”。请 选择一个安排此程序的文件夹,并且给新创建的文件输入文件名。
在空白的编辑窗体内进行类的设计。
设计中间或完成时,可以选择菜单“组建” | “编译”,对程序进行语法检查。建议 在类定义完成时,对类进行编译,然后才定义成员函数的内容和主调函数。
编译无错,并已定义了主调函数,则可以选择菜单“组建” | “执行”执行程序。
可以选择菜单“组建” | “开始调试”的子菜单对程序进行调试。
【实验程序】
# i ncIude i ostream? h #i ncIudestr i ng.h cI ass Str i ng
{
pub I ic:
StringO
{
s二new char [1];
s二\0;
}
Str ing(char *str)
{
s二new char [strlen(strl+l]; if (s)
strcpy (s, str);
)
Str i ng (const Str i ng sO)
{
s二new char [strlen(sO. s)+1]; if (s)
strcpy (s, sO. s);
}
StringO
{
de I ete [] s;
)
vo i d ToStr i ng ()
{
cout?n输出的字符串为:
}
Str i ng StrCpy (char *s1)
{
de I ete[] s;
s二new char [str Ien(s1)+1]; 中
strcpy (s,s1); return *th i s;
}
Str i ng StrCat (Str i ng s1)
{
char *p;
p二new char [str Ien (s)+1];
//定义构造函数//
//定义构造函数
//定义带一个参数的构造函数
〃定义拷贝构造函数
//定义析构函数
//定义字符串输出函数
?s?end I ;
//定义字符串拷贝函数
//释放空间,便于拷贝
//将字符串s1写入新的s空间
//定义字符串链接函数
//将字符串S拷贝到新的P中
//释放s的内存de I ete [] s s
//释放s的内存
strcpy (s, p); strcat (s, s1. s); return *this;//将该字符串拷贝s
strcpy (s, p); strcat (s, s1. s); return *this;
//将新来的字符串放在原字符串的末尾
//返回该字符串
}
cout?sO. s??s1. s?end I ; e I se i f (strcmp (sO. s, s1. s) 0)cout?sO. s?nu?s1. s?endl ; e I secout?sO. s?,,=,,?s1. s?endl ;pr ivate: char *sStr i ng SO (i hang);SO. ToStr i ng ();
cout?sO. s??s1. s?end I ; e I se i f (strcmp (sO. s, s1. s) 0)
cout?sO. s?nu?s1. s?endl ; e
文档评论(0)