- 0
- 0
- 约5.62千字
- 约 8页
- 2018-07-13 发布于江苏
- 举报
假设我们要开发1个String类它可以方便地处理字符串数据
假设我们要开发一个String类,它可以方便地处理字符串数据。我们可以在类中声明一个数组,考虑到有时候字符串极长,我们可以把数组大小设为200, 但一般的情况下又不需要这么多的空间,这样是浪费了内存。对了,我们可以使用new操作符,这样是十分灵活的,但在类中就会出现许多意想不到的问题,本文 就是针对这一现象而写的。现在,我们先来开发一个Wrong类,从名称上看出,它是一个不完善的类。的确,我们要刻意地使它出现各种各样的问题,这样才好 对症下药。好了,我们开始吧! Wrong.h:
#ifndef WRONG_H_#define WRONG_H_class Wrong{private:char * str; //存储数据 int len; //字符串长度 public:Wrong(const char * s); //构造函数 Wrong(); // 默认构造函数 ~Wrong(); // 析构函数friend ostream operator<<(ostream os,const Wrong st);};#endifWrong.cpp:#include <iostream>#include <cstring> #include wrong.husing namespace std;Wrong::Wrong(const char * s){len = strlen(s); str = new char[len + 1];strcpy(str, s); }//拷贝数据 Wrong::Wrong(){len =0;str = new char[len+1];str[0]=\0;}Wrong::~Wrong(){cout<<这个字符串将被删除:<<str<<\n;//为了方便观察结果,特留此行代码。 delete [] str;}ostream operator<<(ostream os, const Wrong st){os << st.str;return os;}test_right.cpp:#include <iostream>#include <stdlib.h>#include Wrong.husing namespace std;int main(){Wrong temp(天极网);cout<<temp<<\n; system(PAUSE); return 0;} 运行结果: 天极网 请按任意键继续. . . 大家可以看到,以上程序十分正确,而且也是十分有用的。可是,我们不能被表面现象所迷惑!下面,请大家用test_wrong.cpp文件替换test_right.cpp文件进行编译,看看结果。有的编译器可能就是根本不能进行编译! test_wrong.cpp:
#include <iostream>#include <stdlib.h>#include Wrong.husing namespace std;void show_right(const Wrong);void show_wrong(const Wrong);//注意,参数非引用,而是按值传递。 int main(){Wrong test1(第一个范例。);Wrong test2(第二个范例。);Wrong test3(第三个范例。);Wrong test4(第四个范例。); cout<<下面分别输入三个范例:\n;cout<<test1<<endl;cout<<test2<<endl;cout<<test3<<endl;Wrong* wrong1=new Wrong(test1);cout<<*wrong1<<endl;delete wrong1;cout<<test1<<endl;//在Dev-cpp上没有任何反应。cout<<使用正确的函数:<<endl;show_right(test2);cout<<test2<<endl;cout<<使用错误的函数:<<endl;show_wrong(test2);cout<<test2<<endl;//这一段代码出现严重的错误! Wrong wrong2(test3);cout<<wrong2: <<wrong2<<endl;Wrong wrong3;wrong3=test4;cout<<wrong3: <<wrong3<<endl;cout<<下面,程序结束,析构函数将被调用。<<endl; return 0;}void show_right(const Wrong a){
您可能关注的文档
- 使用OpenG画球体.doc
- 使用和调试教程.doc
- 使用骐达车一些小窍门3.doc
- 使领馆推荐项目求合作.doc
- 例题精讲如何解答对策题3.doc
- 供应商主要业绩一览表.doc
- 供京禽类屠宰加企业资格备案申请审核报评材料.doc
- 供应商战略选择和卓越谈判技巧实战班.doc
- 供港澳活猪饲养检验检疫注册.doc
- 供货范围及技术要求4.doc
- 2025年版汽车趋势报告 The 2025 EPA Automotive Trends Report.docx
- 2026年边缘计算开源平台EdgeX Foundry入门与二次开发.docx
- 2026年超声内镜放大内镜早癌诊断AI辅助识别系统临床评价.docx
- 2026年报废汽车回收与再制造逆向物流体系.docx
- 2026年产品碳足迹核算方法学:从摇篮到大门与从摇篮到坟墓.docx
- 2026年城乡要素平等交换双向流动政策创新试点申报材料.docx
- 2026年超导半导体接口电路架构与电平转换驱动器设计.docx
- 2026年财政贴息不再以再贷款支持为前提后的风险防范与合规要点.docx
- 2026年不动产信托登记试点政策对遗嘱信托支持.docx
- 2026年城乡有机废弃物协同处理技术方案.docx
最近下载
- KJ251A型人员管理系统说明书.pdf VIP
- 2024年宜春幼儿师范高等专科学校单招综合素质考试试题及答案解析.docx VIP
- 2026辽宁沈阳吉驰汽车产业发展有限公司社会招聘23人备考题库附答案详解.docx VIP
- 2025年大学《海洋科学与技术》专业题库—— 海洋沉积学与古海洋学研究的进展.docx VIP
- 建筑工程图集 07SJ504-1:隔断隔断墙(一).pdf VIP
- 2026辽宁沈阳吉驰汽车产业发展有限公司社会招聘23人笔试参考题库及答案解析.docx VIP
- 2026辽宁沈阳吉驰汽车产业发展有限公司社会招聘23人备考试题附答案详解.docx VIP
- 2025年石材加工项目可行性研究报告.docx
- 环境保护税对制造业企业绿色技术创新的影响研究.pdf VIP
- 11.2《少年当自强》教学课件 2026二年级道德与法治下册.pptx
原创力文档

文档评论(0)