编写String& operator+=(String &s)函数,重载“+=”运算符,实现两字符串的连接赋值
时间: 2024-02-18 10:06:25 浏览: 75
好的,以下是实现String类中重载“+=”运算符的代码:
```
class String{
public:
// 其他成员函数和数据成员的定义
// 重载“+=”运算符
String& operator+=(const String &s){
char *temp = new char[length + s.length + 1]; // 申请新的内存空间
strcpy(temp, str); // 复制原来的字符串
strcat(temp, s.str); // 连接新的字符串
delete[] str; // 释放原来的内存空间
str = temp; // 将新的字符串指针赋值给str
length += s.length; // 更新字符串长度
return *this; // 返回*this,即当前对象的引用
}
private:
char *str; // 保存字符串的指针
int length; // 保存字符串的长度
};
```
在上面的代码中,我们使用了C++中的字符串函数`strcpy`和`strcat`来实现字符串的复制和连接。在函数体中,我们首先申请了一个新的内存空间,并将原来的字符串复制到新的空间中,然后再连接上要添加的字符串。接着,我们释放了原来的内存空间,将新的字符串指针赋值给str,并更新了字符串长度。最后,我们返回*this,即当前对象的引用。
使用上述代码,我们就可以像下面这样使用“+=”运算符来连接两个字符串:
```
String s1("hello");
String s2("world");
s1 += s2;
```
执行完上述代码后,s1的值就变成了“helloworld”。
阅读全文