用c++1、定义一个字符串类,重载的运算符包括: =、+、+=、>、<. >=、<=、==、!=。其中,除=、+=运算符用成员函数定义外、其余的运算符要求用友元方式定义。
时间: 2024-10-20 21:18:12 浏览: 50
在 C++ 中,我们可以创建一个名为 `String` 的类来表示字符串,并通过友元函数重载一些基本的算术运算符。友元是一种特殊的关系,允许我们访问类的私有或保护成员,以便在非成员函数中操作类的对象。以下是这个 `String` 类的一个简单实现:
```cpp
#include <iostream>
#include <string>
class String {
public:
// 定义构造函数和赋值操作符
String(const std::string& str) : value(str) {}
String& operator=(const std::string& other) {
value = other;
return *this;
}
// 成员函数重载 + 和 +=
String operator+(const String& other) const {
return String(value + other.value);
}
String& operator+=(const String& other) {
value += other.value;
return *this;
}
// 使用友元定义比较运算符
friend bool operator>(const String& a, const String& b) { return a.value > b.value; }
friend bool operator<(const String& a, const String& b) { return a.value < b.value; }
friend bool operator>=(const String& a, const String& b) { return a.value >= b.value; }
friend bool operator<=(const String& a, const String& b) { return a.value <= b.value; }
friend bool operator==(const String& a, const String& b) { return a.value == b.value; }
friend bool operator!=(const String& a, const String& b) { return a.value != b.value; }
private:
std::string value;
};
int main() {
String s1("Hello");
String s2("World");
s1 = "C++";
s1 += ", nice to meet you!";
std::cout << s1 << " > " << s2 << std::endl;
return 0;
}
```
阅读全文