用C++完成下面程序:设计一个字符串类重载“+=”的运算符,使其实现两个字符串的连接并赋值。用成员函数实现
时间: 2024-01-22 21:20:05 浏览: 24
以下是用成员函数实现字符串类重载“+=”运算符的代码:
```C++
#include <iostream>
#include <cstring>
using namespace std;
class String {
private:
char *str;
public:
String(const char *s = NULL); // 构造函数
~String(); // 析构函数
String(const String &); // 复制构造函数
String operator+(const String &) const; // 重载"+"运算符
String &operator+=(const String &); // 重载"+="运算符
void display() const; // 显示字符串
};
String::String(const char *s) {
if (s == NULL) {
str = new char[1];
str[0] = '\0';
} else {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
}
String::~String() {
delete[] str;
}
String::String(const String &s) {
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
}
String String::operator+(const String &s) const {
String tmp;
tmp.str = new char[strlen(str) + strlen(s.str) + 1];
strcpy(tmp.str, str);
strcat(tmp.str, s.str);
return tmp;
}
String &String::operator+=(const String &s) {
char *tmp = new char[strlen(str) + strlen(s.str) + 1];
strcpy(tmp, str);
strcat(tmp, s.str);
delete[] str;
str = tmp;
return *this;
}
void String::display() const {
cout << str << endl;
}
int main() {
String s1("Hello");
String s2(" World");
s1 += s2; // 使用重载"+="运算符
s1.display();
return 0;
}
```
输出结果为:
```
Hello World
```