C++03:论常用的类
一.简介
二.String类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | class String{ public : String( const char * str=NULL); //通用构造函数 String( const String& str); //拷贝构造函数 ~String(); //析构函数 String operator +( const String& str) const ; //重载+ String& operator =( const String& str); //重载= String& operator +=( const String& str); //重载+= bool operator ==( const String &str); //重载== char & operator []( int n) const ; //重载[] size_t size() const //获取长度 const char * c_str() const ; //获取C字符串 friend istream& operator >>(istream& is,String& str); //输入 friend ostream& operator <<(ostream& os,String& str); //输出 private : char * data; //字符串 size_t length; //长度 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | //通用构造函数 String::String( const char * str){ if (!str){ length=0; data= new char [1]; *data= '\0' ; } else { length= strlen (str); data= new char [length+1]; strcpy (data,str); } } //拷贝构造函数需要进行深拷贝 String::String( const String& str){ if (!str){ length=str.size(); data= new char [length+1]; strcpy (data,str.c_str()); } } //析构函数需要内存释放和长度归零 String::~String(){ delete [] data; length=0; } //重载字符串连接运算 String String::operator +( const String& str){ String newString; newString.length=length+str.size(); newString.data= new char [newString.length+1]; strcpy (newString.data,data); strcat (newString.data,str.data); return newString; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)