请实现operator+以进行如下操作: string1 = string2 + string3
时间: 2023-12-30 18:01:54 浏览: 76
string 的获取实现
好的,我理解你的要求是将两个字符串用等号连接起来赋值给另外一个字符串。我可以为你实现一个名为`operator=`的函数来达成这个目的:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string string1, string2 = "hello", string3 = "world";
string1 = string2 + " " + string3;
cout << string1 << endl; // 输出 "hello world"
return 0;
}
```
这个程序中,我们首先定义了三个字符串变量`string1`、`string2`和`string3`。然后,我们使用`+`运算符将`string2`和`string3`连接起来,中间用空格隔开。最后,我们将连接后的字符串赋值给`string1`。
如果你需要在你的程序中重载`operator=`函数来实现这个操作,你可以这样写:
```c++
#include <iostream>
#include <string>
using namespace std;
class MyString {
private:
string str;
public:
MyString() {}
MyString(const string& s) : str(s) {}
MyString operator=(const MyString& rhs) {
str = rhs.str;
return *this;
}
MyString operator=(const string& s) {
str = s;
return *this;
}
friend MyString operator+(const MyString& lhs, const MyString& rhs) {
return MyString(lhs.str + rhs.str);
}
friend MyString operator+(const MyString& lhs, const string& rhs) {
return MyString(lhs.str + rhs);
}
friend MyString operator+(const string& lhs, const MyString& rhs) {
return MyString(lhs + rhs.str);
}
friend ostream& operator<<(ostream& os, const MyString& ms) {
os << ms.str;
return os;
}
};
int main() {
MyString string1, string2 = "hello", string3 = "world";
string1 = string2 + " " + string3;
cout << string1 << endl; // 输出 "hello world"
return 0;
}
```
这个程序中,我们定义了一个名为`MyString`的类来表示字符串,重载了`operator=`函数和`operator+`函数。在`operator=`函数中,我们将右操作数的字符串赋值给左操作数的字符串,并返回左操作数的引用。在`operator+`函数中,我们将两个字符串连接起来,并返回一个新的`MyString`对象。最后,我们在`main`函数中使用这些运算符来实现你要求的操作,并输出结果。
阅读全文