【C++】模拟实现string类
以下是一个简化版本的C++ string类实现,包含了基本的构造函数、拷贝构造函数、赋值运算符重载以及size()
和c_str()
方法。
#include <iostream>
#include <cstring>
class String {
private:
char* str; // 指向动态分配的内存,用于存储字符串
public:
// 默认构造函数
String() : str(new char[1]) {
*str = '\0';
}
// 构造函数
String(const char* s) {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
// 拷贝构造函数
String(const String& s) {
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
}
// 析构函数
~String() {
delete[] str;
}
// 赋值运算符重载
String& operator=(const String& s) {
if (this != &s) {
delete[] str;
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
}
return *this;
}
// 返回字符串长度
size_t size() const {
return strlen(str);
}
// 返回C风格字符串
const char* c_str() const {
return str;
}
};
int main() {
String s1 = "Hello";
String s2 = s1; // 拷贝构造
String s3;
s3 = s1; // 赋值
std::cout << "s1: " << s1.c_str() << ", length: " << s1.size() << std::endl;
std::cout << "s2: " << s2.c_str() << ", length: " << s2.size() << std::endl;
std::cout << "s3: " << s3.c_str() << ", length: " << s3.size() << std::endl;
return 0;
}
这个实现没有包括所有的功能(例如迭代器、关系运算符、子字符串、插入和删除等),但提供了一个基本的框架。
评论已关闭