C++定义一个字符串类,重载的运算符包括:=、+、+=、>、<、>=、<=、==、!=。其中,除=、+=运算符用成员函数定义外、其余的运算符要求用友元方式定义
时间: 2024-10-27 18:15:14 浏览: 50
在C++中,为了定义一个自定义的字符串类并重载运算符,我们首先需要创建一个类`MyString`,然后通过成员函数处理赋值(`=`)和连接(`+=`)操作,而其他如比较(`>`, `<`, `>=`, `<=`, `==`, `!=`)等非赋值操作则通常通过友元函数的方式实现。这里是一个简单的示例:
```cpp
class MyString {
private:
std::string str;
public:
// 成员函数: 赋值和连接操作
MyString(const std::string& s = "") : str(s) {}
MyString operator=(const std::string& other) {
if (this != &other)
str = other;
return *this;
}
MyString& operator+=(const std::string& other) {
str += other;
return *this;
}
// 友元函数: 比较操作
friend bool operator>(const MyString& a, const MyString& b);
friend bool operator<(const MyString& a, const MyString& b);
friend bool operator>=(const MyString& a, const MyString& b);
friend bool operator<=(const MyString& a, const MyString& b);
friend bool operator==(const MyString& a, const MyString& b);
friend bool operator!=(const MyString& a, const MyString& b);
// 其他标准库已经重载了这些运算符,此处不再赘述
};
// 实现友元函数的比较操作
bool operator>(const MyString& a, const MyString& b) {
return a.str > b.str;
}
// 其他比较操作类似,只需复制上述代码并改变条件即可
```
在这个例子中,比较操作作为类`MyString`的朋友,可以在外部直接作用于两个`MyString`对象,无需对它们进行类型转换。这允许了更自然和直观的操作,比如`myString1 > myString2`。
阅读全文