运算符重载实现字符串串接

来源:互联网 发布:dota2淘宝饰品便宜 编辑:程序博客网 时间:2024/04/28 03:57
/*定义一个字符串类 STR,实现字符串的拼接。通过重载运算符“+=”,实现类中数据成员(字符串)的拼接。如有必要,可定义其他辅助函数,如赋值运算符重载函数。具体要求如下:(1)私有数据成员:    char *s;    数据成员,存放字符串(2)公有成员函数:    STR(char *p=0):构造函数,以形参初始化数据成员;    friend STR &operator+=( STR &str1,STR &str2):重载函数,实现类中字符串的拼接;    void print():输出数据成员;    ~STR():析构函数,释放动态内存。(3)对所定义的类进行测试。以“abcd”和“12345”为测试数据,实现它们的拼接,并把拼接后的字符串对象赋给新的对象。*/#include<iostream>using namespace std;class str{private:    char *s;public:    str(char *p );  //函数定义和函数声明不能同时声明默认参数    friend str &operator +=(str &str1, str &str2);    void print();    ~str();};str::str(char *p = 0){    s = new char;    s = p;}str &operator+=(str &str1, str &str2)//此种方法不足够好,虽然也能出来结果,但内存空间早已出界,不安全。{    char *ptr = str1.s;    while (*ptr)    {        ptr++;    }    while (*str2.s)    {        *ptr = *str2.s;        ptr++;        str2.s++;    }    *ptr = '\0';    return str1;}void str::print(){    char *ptr = s;    cout << ptr << endl;}str::~str(){    delete s;}int main(){    char a[] = "abcd", b[] = "1234";    str str1(a), str2(b);    str1 += str2;    str1.print();    //必要时可以申请str3用来盛放结果,只不过那时就需要定义“+”运算符。    system("pause");    return 0;}
阅读全文
0 0
原创粉丝点击