参照C++ String类,实现MyString类。 实现要求: 1.构造函数 2.拷贝构造函数(深拷贝) 3.析构函数 4.重载 +、+=、=、[]、>、>=、<、<=、==、<<、>> 运算符
时间: 2024-10-08 14:18:32 浏览: 11
在C++中,我们可以创建一个自定义字符串类MyString,基于C++标准库中的string类。这里是一个简单的实现示例:
```cpp
#include <iostream>
#include <string>
class MyString {
private:
std::string data; // 存储字符串的私有变量
public:
// 构造函数
MyString() : data(std::string()) {}
// 拷贝构造函数 (深拷贝)
MyString(const MyString& other) : data(other.data) {} // 使用std::string的复制构造函数
// 析构函数
~MyString() {}
// 拷贝赋值运算符 (深拷贝)
MyString& operator=(const MyString& other) {
if (this != &other) {
data = other.data;
}
return *this;
}
// 重载 +
MyString operator+(const MyString& other) const {
return MyString(data + other.data);
}
// += 运算符
MyString& operator+=(const MyString& other) {
data += other.data;
return *this;
}
// [] 运算符用于访问字符
char operator[](size_t index) const {
if (index < data.size()) {
return data[index];
} else {
throw std::out_of_range("Index out of range");
}
}
// 重载比较运算符
bool operator>(const MyString& other) const {
return data > other.data;
}
bool operator<(const MyString& other) const {
return data < other.data;
}
bool operator>=(const MyString& other) const {
return !(*this < other);
}
bool operator<=(const MyString& other) const {
return !(*this > other);
}
bool operator==(const MyString& other) const {
return data == other.data;
}
bool operator!=(const MyString& other) const {
return !(*this == other);
}
// 输入输出流操作符
friend std::ostream& operator<<(std::ostream& os, const MyString& str) {
os << str.data;
return os;
}
friend std::istream& operator>>(std::istream& is, MyString& str) {
is >> str.data;
return is;
}
};
```