13.定义一个字符串类 STR,实现字符串的拼接。通过重载运算符“+=”,实现类中数据成员(字符串)的拼接。 如有必要,可定义其他辅助函数,如赋值运算符重载函数。
具体要求如下:
- 私有数据成员:
- char *s;数据成员,存放字符串
- 公有成员函数:
- STR(char *p=0):构造函数,以形参初始化数据成员;
- friend STR &operator+=(STR &str1,STR &str2):重载函数,实现类中字符串的拼接;
- void print():输出数据成员;
- ~STR():析构函数,释放动态内存。
- 对所定义的类进行测试。以“abcd”和“12345”为测试数据,实现它们的拼接,并把拼接后的字符串对
象赋给新的对象。
#include<iostream>
#include<cstring>
using namespace std;
class STR{
char *s;
public:
STR(char *p=0){
if(p){
s=new char[strlen(p)+1];
strcpy(s,p);
}else s=0;
}
STR operator=(STR &str){
s = new char[strlen(str.s)+1];
strcpy(s,str.s);
return *this;
}
friend STR& operator+=(STR &str1,STR &str2){
STR t=str1;;
str1.s=new char[strlen(t.s)+strlen(str2.s)+1];
strcpy(str1.s,t.s);
strcat(str1.s,str2.s);
return str1;
}
void print(){
cout<<s<<endl;
}
~STR(){
if(s)delete[]s;
}
};
int main(){
char a[]="abcd",b[]="1234";
STR s1(a),s2(b);
s1.print();
s2.print();
STR s3=s1+=s2;
s3.print();
return 0;
}