设计一个字符串类MyString,为其设计构造函数,析构函数和复制构造函数。重载运算符“+”,“=”,“+=”
时间: 2024-03-25 12:41:38 浏览: 57
编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数[文].pdf
好的,我可以为您设计MyString类。
```C++
#include <cstring>
#include <iostream>
class MyString {
public:
MyString() {
m_data = nullptr;
m_size = 0;
}
MyString(const char* str) {
m_size = strlen(str);
m_data = new char[m_size + 1];
strcpy(m_data, str);
}
MyString(const MyString& other) {
m_size = other.m_size;
m_data = new char[m_size + 1];
strcpy(m_data, other.m_data);
}
~MyString() {
if (m_data != nullptr) {
delete[] m_data;
m_data = nullptr;
}
}
MyString& operator=(const MyString& other) {
if (this == &other) {
return *this;
}
if (m_data != nullptr) {
delete[] m_data;
m_data = nullptr;
}
m_size = other.m_size;
m_data = new char[m_size + 1];
strcpy(m_data, other.m_data);
return *this;
}
MyString operator+(const MyString& other) {
MyString newString;
newString.m_size = m_size + other.m_size;
newString.m_data = new char[newString.m_size + 1];
strcpy(newString.m_data, m_data);
strcat(newString.m_data, other.m_data);
return newString;
}
MyString& operator+=(const MyString& other) {
m_size += other.m_size;
char* new_data = new char[m_size + 1];
strcpy(new_data, m_data);
strcat(new_data, other.m_data);
if (m_data != nullptr) {
delete[] m_data;
m_data = nullptr;
}
m_data = new_data;
return *this;
}
private:
char* m_data;
int m_size;
};
```
以上是MyString类的设计,包括构造函数,析构函数和复制构造函数,以及重载运算符“+”,“=”和“+=”。如果您有其他问题,请随时问我!
阅读全文