完善自定义字符串类mystring,函数包括构造函数、复制构造函数、析构函数,并重载“[ ]”、”=” 、“+”(连接)、“<”、“>”、“==”(比较)。
时间: 2023-10-26 20:04:48 浏览: 23
好的,我了解您的问题。以下是可能的实现代码,仅供参考:
```c++
#include <cstring>
#include <iostream>
class mystring {
public:
// 构造函数
mystring() {
str_ = new char[1];
*str_ = '\0';
len_ = 0;
}
mystring(const char* s) {
len_ = strlen(s);
str_ = new char[len_ + 1];
strcpy(str_, s);
}
// 复制构造函数
mystring(const mystring& other) {
len_ = other.len_;
str_ = new char[len_ + 1];
strcpy(str_, other.str_);
}
// 析构函数
~mystring() {
delete[] str_;
}
// 重载 "[]" 操作符
char& operator[](int index) {
return str_[index];
}
// 重载 "=" 操作符
mystring& operator=(const mystring& other) {
if (this != &other) {
delete[] str_;
len_ = other.len_;
str_ = new char[len_ + 1];
strcpy(str_, other.str_);
}
return *this;
}
// 重载 "+" 操作符
mystring operator+(const mystring& other) {
mystring result;
result.len_ = len_ + other.len_;
result.str_ = new char[result.len_ + 1];
strcpy(result.str_, str_);
strcat(result.str_, other.str_);
return result;
}
// 重载 "<" 操作符
bool operator<(const mystring& other) {
return strcmp(str_, other.str_) < 0;
}
// 重载 ">" 操作符
bool operator>(const mystring& other) {
return strcmp(str_, other.str_) > 0;
}
// 重载 "==" 操作符
bool operator==(const mystring& other) {
return strcmp(str_, other.str_) == 0;
}
// 返回字符串长度
int length() const {
return len_;
}
// 返回字符串
const char* c_str() const {
return str_;
}
private:
char* str_;
int len_;
};
```
这是一个简单的 `mystring` 类实现,包括构造函数、复制构造函数、析构函数,并重载了 `[]`、`=`、`+`、`<`、`>`、`==` 操作符。您可以根据自己的需求进行修改和扩展。