用c++方法解决下列问题:编写字符串运算符“+=”的重载函数,使运算符“+=”用于字符串的拼接运算,实现字符串的S1+=S2操作运算。分别用友元函数和成员函数实现。
时间: 2024-03-27 13:41:40 浏览: 168
C++运算符重载 成员函数与友元函数详解
5星 · 资源好评率100%
好的,以下是代码示例:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class MyString {
private:
char* str; // 字符串指针
public:
MyString(const char* s) {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
~MyString() {
delete [] str;
}
// 友元函数实现
friend MyString operator+=(MyString& s1, const MyString& s2) {
char* temp = new char[strlen(s1.str) + strlen(s2.str) + 1];
strcpy(temp, s1.str);
strcat(temp, s2.str);
delete [] s1.str;
s1.str = temp;
return s1;
}
// 成员函数实现
MyString& operator+=(const MyString& s) {
char* temp = new char[strlen(str) + strlen(s.str) + 1];
strcpy(temp, str);
strcat(temp, s.str);
delete [] str;
str = temp;
return *this;
}
void print() {
cout << str << endl;
}
};
int main() {
MyString s1("Hello"), s2("World");
s1 += s2;
s1.print(); // 输出 HelloWorld
s2 += "!";
s2.print(); // 输出 World!
return 0;
}
```
以上代码定义了一个 MyString 类,其中包含了两个实现“+=”运算符的方法:一个是友元函数,一个是成员函数。在 main 函数中,我们可以看到对于两个 MyString 对象的“+=”操作,都可以实现字符串的拼接运算。
需要注意的是,在代码中我们使用了动态内存分配,需要在适当的时候进行 delete 操作,避免内存泄漏。
阅读全文