C++03:论常用的类
2020-12-13 03:56
标签:char amp ring == 字符串 c++ pre bool 长度 C++03:论常用的类 标签:char amp ring == 字符串 c++ pre bool 长度 原文地址:https://www.cnblogs.com/k5bg/p/11096880.html一.简介
二.String类
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
//通用构造函数
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;
}