string类的简单实现c++
时间: 2024-09-14 15:01:58 浏览: 81
在C++中,`string` 类是标准库中的一个非常重要的类,它提供了一系列方法来处理字符串数据。在实际的开发中,我们一般使用标准库中的 `std::string`,但是理解其基本实现方式有助于我们更好地理解字符串对象是如何工作的。
下面是一个简单的 `string` 类的实现,用于演示其基本结构和功能:
```cpp
#include <iostream>
#include <cstring>
class SimpleString {
private:
char* data; // 指向字符串数据的指针
size_t length; // 字符串的长度
public:
// 构造函数
SimpleString(const char* str = "") : length(strlen(str)) {
data = new char[length + 1];
strcpy(data, str);
}
// 拷贝构造函数
SimpleString(const SimpleString& other) : length(other.length) {
data = new char[length + 1];
strcpy(data, other.data);
}
// 赋值操作符重载
SimpleString& operator=(const SimpleString& other) {
if (this != &other) {
delete[] data; // 释放旧数据
length = other.length;
data = new char[length + 1];
strcpy(data, other.data);
}
return *this;
}
// 析构函数
~SimpleString() {
delete[] data;
}
// 获取字符串长度
size_t getLength() const {
return length;
}
// 重载[]操作符,用于访问字符
char& operator[](size_t index) {
return data[index];
}
// 重载=操作符,用于赋值字符串
SimpleString& operator=(const char* str) {
delete[] data;
length = strlen(str);
data = new char[length + 1];
strcpy(data, str);
return *this;
}
// 输出字符串
friend std::ostream& operator<<(std::ostream& os, const SimpleString& str) {
os << str.data;
return os;
}
};
int main() {
SimpleString s1("Hello");
SimpleString s2 = s1; // 拷贝构造
s1 = "World"; // 赋值操作
std::cout << s1 << std::endl; // 输出: World
std::cout << s2 << std::endl; // 输出: Hello
return 0;
}
```
上述代码展示了如何实现一个简单的字符串类,包含基本的构造、拷贝构造、赋值操作符重载、析构函数,以及一些基本操作如获取字符串长度和重载 `[]` 和 `=` 操作符。
阅读全文