完善自定义字符串类mystring,函数包括构造函数、复制构造函数、析构函数,并重载“[ ]”、”=” 、“+”(连接)、“<”、“>”、“==”(比较)
时间: 2023-10-26 07:04:48 浏览: 124
好的,我能够帮你完善自定义字符串类mystring。首先,我给您展示一下该类的头文件和实现文件的框架:
```c++
// mystring.h 头文件
#ifndef MYSTRING_H
#define MYSTRING_H
class MyString {
public:
// 构造函数
MyString();
MyString(const char* str);
MyString(const MyString& other);
// 析构函数
~MyString();
// 重载操作符
char& operator[](int index);
MyString& operator=(const MyString& other);
MyString operator+(const MyString& other);
bool operator<(const MyString& other);
bool operator>(const MyString& other);
bool operator==(const MyString& other);
private:
char* m_data; // 字符串的存储空间
};
#endif // MYSTRING_H
// mystring.cpp 实现文件
#include "mystring.h"
#include <cstring>
// 构造函数
MyString::MyString() {
m_data = new char[1];
*m_data = '\0';
}
MyString::MyString(const char* str) {
if (str == nullptr) {
m_data = new char[1];
*m_data = '\0';
} else {
int length = strlen(str);
m_data = new char[length + 1];
strcpy(m_data, str);
}
}
MyString::MyString(const MyString& other) {
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
}
// 析构函数
MyString::~MyString() {
delete[] m_data;
}
// 重载操作符
char& MyString::operator[](int index) {
return m_data[index];
}
MyString& MyString::operator=(const MyString& other) {
if (this != &other) {
delete[] m_data;
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
}
return *this;
}
MyString MyString::operator+(const MyString& other) {
MyString newString;
int length = strlen(m_data) + strlen(other.m_data);
char* newData = new char[length + 1];
strcpy(newData, m_data);
strcat(newData, other.m_data);
newString = newData;
delete[] newData;
return newString;
}
bool MyString::operator<(const MyString& other) {
return (strcmp(m_data, other.m_data) < 0);
}
bool MyString::operator>(const MyString& other) {
return (strcmp(m_data, other.m_data) > 0);
}
bool MyString::operator==(const MyString& other) {
return (strcmp(m_data, other.m_data) == 0);
}
```
以上是一个简单的mystring类,实现了构造函数、复制构造函数、析构函数,并重载了“[ ]”、”=”、“+”(连接)、“<”、“>”、“==”(比较)操作符。
其中,构造函数用于构造一个空字符串或者根据传入的字符串构造一个新的字符串;复制构造函数用于使用一个已有的字符串构造一个新的字符串;析构函数用于释放字符串的存储空间。
重载操作符中,“[]”操作符用于访问字符串中的某个字符;“=”操作符用于将一个字符串赋值给另一个字符串;“+”操作符用于将两个字符串连接起来形成一个新的字符串;“<”、“>”、“==”操作符用于比较两个字符串的大小和是否相等。
希望这个代码对您有所帮助。
阅读全文