string类实现
2015-09-24 11:14
330 查看
#include <iostream> #include<string.h> using namespace std; class String { public: String(const char* str="");//通用构造函数 String(const String& another);//拷贝构造函数 ~String();//析构函数 String& operator =(const String& rhs);//赋值函数 bool operator==(const String& str);//字符串相等判断 friend ostream& operator<<(ostream& o,const String& str);//<<重载 private: char* m_data;//用于保存字符串 }; String::String(const char* str) { if(str=="") { m_data=new char[1]; m_data[0]='\0'; } else { m_data=new char[strlen(str)+1]; strcpy(m_data,str); } } String::String(const String& another) { m_data=new char[strlen(another.m_data)+1]; strcpy(m_data,another.m_data); } String::~String() { delete[] m_data; } String& String::operator=(const String& rhs) { if(this==&rhs) return *this; delete[] m_data;//释放原来的内存,新开一块内存 m_data=new char[strlen(rhs.m_data)+1]; strcpy(m_data,rhs.m_data); return *this; } bool String::operator==(const String& str) { return 0==strcmp(m_data,str.m_data); } ostream& operator<<(ostream& o,const String& str) { o<<str.m_data; return o; } int main() { String s; String sc(s); string st; string stc(st); cout<<s<<" "<<sc<<endl; cout<<st<<" "<<stc<<endl; //char *ch=NULL; //String sc1(ch); //Interrupt //string stc1(ch);//Interrupt String s1; String s2("s2 copy s1"); s1=s2; string st1; string st2("st2 copy st1"); st1=st2; cout<<s2<<endl; cout<<st2<<endl; cout<<(s1==s2)<<endl; cout<<(st1==st2)<<endl; return 0; }之所以我将通用构造函数的缺省参数写成
const char* str=""
是因为如果写成
const char* str=NULL调用
char *ch=NULL; String sc1(ch); string stc1(ch);自定义的String类并不会抛出异常,而库里string类会抛出异常。大家不妨试试,欢迎探讨。
相关文章推荐
- 常用开源软件镜像
- LeetCode Remove Duplicates from Sorted Array
- 读取大文件性能测试
- Spring util-namespace下标签相关操作
- 隐藏PHP 版本
- ASP 数字分页效果代码分享
- 项目:LT沃宝游戏大厅 总结与经验
- 关于Linux字符集的查看及修改
- POJ 3414 Pots (BFS)
- Fragment 嵌套 Fragment onActivityResult 无效的解决方法
- 命令行总结
- openoffice启动服务
- 解决Tomcat: Can't load IA 32-bit .dll on a AMD 64-bit platform问题
- Leetcode77: Linked List Cycle
- Objective-C中把URL请求的参数转换为字典
- 如何在JavaScript中手动创建类数组对象
- docker常用术语命令
- cygwin
- 不靠谱的Paypal及海外网站
- 在 Windows 上安装 Bugzilla 详解 (1)