自定义一个MyString类,实现构造,析构,拷贝构造,赋值运算重载、[]运算符重载 +运算符重载 +=运 算符重载 ==运算符重载
时间: 2024-11-30 17:19:19 浏览: 5
详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数
5星 · 资源好评率100%
自定义一个名为MyString的类,我们可以按照标准步骤实现所需的功能:
1. 构造函数:
```cpp
class MyString {
private:
std::string data;
public:
// 默认构造函数
MyString() : data{} {}
// 拷贝构造函数
MyString(const MyString& other) : data(other.data) {}
// 如果需要,可以提供带初始字符串的构造函数
explicit MyString(const std::string& str) : data(str) {}
};
```
2. 析构函数(destructor):
```cpp
~MyString() {} // 默认析构函数,释放内部资源
```
3. 拷贝构造函数(copy constructor):
```cpp
MyString& operator=(const MyString& other) {
if (this != &other) {
data = other.data;
}
return *this;
}
```
4. 赋值运算符重载(assignment operator):
```cpp
MyString& operator=(std::string&& str) {
data = std::move(str);
return *this;
}
```
5. [] 运算符重载(数组访问):
```cpp
char& operator[](size_t index) {
if (index < data.size()) {
return data[index];
} else {
throw std::out_of_range("Array out of range");
}
}
const char& operator[](size_t index) const {
if (index < data.size()) {
return data[index];
} else {
throw std::out_of_range("Array out of range");
}
}
```
6. + 运算符重载(连接两个字符串):
```cpp
MyString operator+(const MyString& other) const {
MyString result(data);
result.data += other.data;
return result;
}
MyString operator+(const std::string& str) const {
MyString result(data);
result.data += str;
return result;
}
```
7. += 运算符重载(将一个字符串追加到当前字符串):
```cpp
MyString& operator+=(const MyString& other) {
data += other.data;
return *this;
}
MyString& operator+=(const std::string& str) {
data += str;
return *this;
}
```
8. == 运算符重载(比较两个字符串是否相等):
```cpp
bool operator==(const MyString& other) const {
return data == other.data;
}
```
阅读全文