28.建立一个类 String,连接两个字符串。
具体要求:
- 私有数据成员
- int Length; //字符串的长度
- char *s; //指向字符串的指针
- 公有成员
- 构造函数 //缺省参数的构造函数、以对象作为参数构造函数、以一个字符串常量作为参数的构造函数
- 析构函数
- 拷贝构造函数
- String operator +(String &); //重载“+”运算符
- String operator =(String &); //重载“=”运算符
- void show(); //输出两个字符串和结果字符
#include <iostream>
#include <cstring>
using namespace std;
class String{
int len;
char *s;
public:
String(){
s = 0;
len = 0;
}
String(const char *s1){
len = strlen(s1);
s = new char[len + 1];
strcpy(s, s1);
}
String(const String &str){
len = str.len;
if (str.s)
{
s = new char[len + 1];
strcpy(s, str.s);
}
else
s = 0;
}
String operator+(String &s1){
String s2;
s2.len = len + s1.len;
s2.s = new char[s2.len + 1];
strcpy(s2.s, s);
strcat(s2.s, s1.s);
return s2;
}
String operator=(const String &s1){
//必须加上const,否则会报错
if (s)
delete[] s;
len = s1.len;
if (s1.s)
{
s = new char[len + 1];
strcpy(s, s1.s);
}
else
s = 0;
return *this;
}
void show(){
cout << s << endl;
}
~String(){
if(s)delete[]s;
}
};
int main()
{
String str1("hello"), str2("world"), str3;
str3 = str1 + str2;
str1.show();
str2.show();
str3.show();
return 0;
}