@全体成员 今天作业:编写字符串运算符“+=”的重载函数,使运算符“+=”用于字符串的拼接运算,实现字符串的S1+=S2操作运算。分别用友元函数和成员函数实现。
时间: 2024-03-23 19:42:41 浏览: 64
好的,这是一道关于C++中字符串运算符重载的编程作业。要求实现字符串的拼接运算,即将一个字符串S2添加到另一个字符串S1的末尾,实现S1+=S2的操作运算。
以下是友元函数实现的代码示例:
```
#include <iostream>
#include <cstring>
using namespace std;
class String {
char* str;
int size;
public:
String() {
size = 0;
str = new char[size+1];
str[0] = '\0';
}
String(char* s) {
size = strlen(s);
str = new char[size+1];
strcpy(str, s);
}
friend String operator+=(String &s1, String &s2);
void display() {
cout << str << endl;
}
};
String operator+=(String &s1, String &s2) {
char* temp = new char[s1.size + s2.size + 1];
strcpy(temp, s1.str);
strcat(temp, s2.str);
s1.size += s2.size;
delete [] s1.str;
s1.str = temp;
return s1;
}
int main() {
String s1("Hello");
String s2(" World!");
s1 += s2;
s1.display();
return 0;
}
```
以下是成员函数实现的代码示例:
```
#include <iostream>
#include <cstring>
using namespace std;
class String {
char* str;
int size;
public:
String() {
size = 0;
str = new char[size+1];
str[0] = '\0';
}
String(char* s) {
size = strlen(s);
str = new char[size+1];
strcpy(str, s);
}
String operator+=(String &s) {
char* temp = new char[size + s.size + 1];
strcpy(temp, str);
strcat(temp, s.str);
size += s.size;
delete [] str;
str = temp;
return *this;
}
void display() {
cout << str << endl;
}
};
int main() {
String s1("Hello");
String s2(" World!");
s1 += s2;
s1.display();
return 0;
}
```
以上两个代码示例都可以实现字符串的拼接运算,使用了不同的实现方式。友元函数的方式可以直接访问类的私有成员变量,而成员函数实现则需要使用this指针来访问类的成员变量。
阅读全文