C++面向对象编程题 第13题

13.定义一个字符串类 STR,实现字符串的拼接。通过重载运算符“+=”,实现类中数据成员(字符串)的拼接。 如有必要,可定义其他辅助函数,如赋值运算符重载函数。

具体要求如下:

  1. 私有数据成员:
  • char *s;数据成员,存放字符串
  1. 公有成员函数:
  • STR(char *p=0):构造函数,以形参初始化数据成员;
  • friend STR &operator+=(STR &str1,STR &str2):重载函数,实现类中字符串的拼接;
  • void print():输出数据成员;
  • ~STR():析构函数,释放动态内存。
  1. 对所定义的类进行测试。以“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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值