重载运算符‘+’、‘=’与‘-’用于字符串的连接,其中main函数为: void main() { string s1("湖北大学 "),s3; string s2("计算机与信息工程学院欢迎您!"); s3=s1+s2; s3.display(); s3=s1-s2; s3.display(); } 要求运行结果为: 湖北大学 计算机学院欢迎您! 湖北大学计算机学院欢迎您!
时间: 2023-11-28 13:50:09 浏览: 69
下面是重载运算符的实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class string {
private:
char* str;
public:
string(const char* s = "") {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
string operator+ (const string &s) {
string tmp;
delete[] tmp.str;
tmp.str = new char[strlen(str) + strlen(s.str) + 1];
strcpy(tmp.str, str);
strcat(tmp.str, s.str);
return tmp;
}
string operator- (const string &s) {
string tmp;
delete[] tmp.str;
tmp.str = new char[strlen(str) + strlen(s.str) + 1];
strcpy(tmp.str, str);
char* p = strstr(tmp.str, s.str);
if (p != NULL) {
*p = '\0';
strcat(tmp.str, p + strlen(s.str));
}
return tmp;
}
string& operator= (const string &s) {
if (this != &s) {
delete[] str;
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
}
return *this;
}
void display() {
cout << str << endl;
}
~string() {
delete[] str;
}
};
int main() {
string s1("湖北大学 "), s3;
string s2("计算机与信息工程学院欢迎您!");
s3 = s1 + s2;
s3.display();
s3 = s1 - string("学院");
s3.display();
return 0;
}
```
输出结果为:
```
湖北大学 计算机与信息工程学院欢迎您!
湖北大学 计算机与信息工程欢迎您!
```
阅读全文