基于char* 设计一个字符串类MyString,具有构造函数、析构函数、复制构造函数
时间: 2024-01-24 19:05:26 浏览: 89
构造一个对象的副本——深拷贝-析构函数和拷贝构造函数
下面是一个基于char*的字符串类MyString的实现,具有构造函数、析构函数、复制构造函数:
```c++
#include <cstring>
class MyString {
public:
// 构造函数
MyString(const char* str = nullptr) {
if (str == nullptr) {
m_data = new char[1];
m_data[0] = '\0';
} else {
int len = strlen(str);
m_data = new char[len + 1];
strcpy(m_data, str);
}
}
// 复制构造函数
MyString(const MyString& other) {
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
// 析构函数
~MyString() {
delete[] m_data;
}
private:
char* m_data;
};
```
这个类包含一个指向字符数组的指针成员变量m_data,它的长度由构造函数动态分配并初始化。构造函数根据输入的字符串参数判断是否为nullptr,如果是则分配长度为1的空字符数组,否则分配长度为字符串长度+1的数组,并将输入字符串复制到该数组中。复制构造函数则是根据另一个MyString对象的m_data成员变量的长度动态分配并初始化新的m_data数组,然后将原始对象的m_data数组复制到该数组中。析构函数释放了动态分配的m_data数组的内存。
阅读全文