封装一个string类的代码
时间: 2024-04-16 17:26:47 浏览: 69
下面是一个简单的示例代码,展示了如何封装一个简化版的 string 类:
```cpp
#include <iostream>
class MyString {
private:
char* m_data; // 字符串数据
public:
// 默认构造函数
MyString() : m_data(nullptr) {}
// 构造函数
MyString(const char* str) {
if (str == nullptr) {
m_data = nullptr;
} else {
int length = std::strlen(str);
m_data = new char[length + 1];
std::strcpy(m_data, str);
}
}
// 析构函数
~MyString() {
delete[] m_data;
}
// 拷贝构造函数
MyString(const MyString& other) {
int length = std::strlen(other.m_data);
m_data = new char[length + 1];
std::strcpy(m_data, other.m_data);
}
// 赋值运算符重载
MyString& operator=(const MyString& other) {
if (this != &other) {
delete[] m_data;
int length = std::strlen(other.m_data);
m_data = new char[length + 1];
std::strcpy(m_data, other.m_data);
}
return *this;
}
// 获取字符串长度
int length() const {
return std::strlen(m_data);
}
// 输出字符串
void print() const {
if (m_data != nullptr) {
std::cout << m_data << std::endl;
}
}
};
int main() {
MyString str1("Hello");
MyString str2 = str1; // 拷贝构造
MyString str3;
str3 = str2; // 赋值运算符重载
str1.print(); // 输出 "Hello"
str2.print(); // 输出 "Hello"
str3.print(); // 输出 "Hello"
return 0;
}
```
这个示例中,我们封装了一个简单的 string 类 `MyString`,它具有构造函数、析构函数、拷贝构造函数、赋值运算符重载等基本功能,同时也包括了获取字符串长度和输出字符串的成员函数。请注意,这只是一个简化的示例,实际的 string 类实现要更加复杂和完善。
阅读全文