设计一个字符串类重载“+=”运算符,使其实现两个字符串的连接并赋值。
时间: 2024-02-18 09:06:18 浏览: 104
好的,下面是字符串类重载“+=”运算符的实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class String {
private:
char *str;
public:
String() {
str = NULL;
}
String(const char *s) {
if (s != NULL) {
str = new char[strlen(s) + 1];
strcpy(str, s);
} else {
str = NULL;
}
}
String(const String &s) {
if (s.str != NULL) {
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
} else {
str = NULL;
}
}
~String() {
if (str != NULL) {
delete[] str;
str = NULL;
}
}
String& operator+=(const String &s) {
if (s.str != NULL) {
char *newstr = new char[strlen(str) + strlen(s.str) + 1];
strcpy(newstr, str);
strcat(newstr, s.str);
delete[] str;
str = newstr;
}
return *this;
}
friend ostream& operator<<(ostream &out, const String &s) {
if (s.str != NULL) {
out << s.str;
}
return out;
}
};
int main() {
String s1("Hello, ");
String s2("world!");
s1 += s2;
cout << s1 << endl;
return 0;
}
```
运行结果为:
```
Hello, world!
```
在上面的代码中,我们定义了一个字符串类 `String`,并重载了 `+=` 运算符实现字符串的连接。当我们将两个字符串进行连接后,会生成一个新的字符串对象,并释放原有的字符串对象的内存空间。最后,我们还重载了输出运算符 `<<`,用于输出字符串对象的值。
希望能够帮助到你!
阅读全文