仿照string类设计String类
时间: 2023-08-15 10:25:33 浏览: 102
好的,我来为您设计一个String类。
首先,我们需要考虑String类的成员变量和方法。String类需要保存一个char类型的指针,指向字符串的开头位置,同时还需要保存字符串的长度。以下是设计的代码:
```c++
class String {
private:
char* m_data;
int m_length;
public:
String();
String(const char* str);
String(const String& other);
~String();
String& operator=(const String& other);
const char* c_str() const;
int length() const;
};
```
接下来,我们需要实现每个方法的功能。首先是构造函数和析构函数:
```c++
String::String() {
m_data = new char[1];
m_data[0] = '\0';
m_length = 0;
}
String::String(const char* str) {
m_length = strlen(str);
m_data = new char[m_length + 1];
strcpy(m_data, str);
}
String::String(const String& other) {
m_length = other.m_length;
m_data = new char[m_length + 1];
strcpy(m_data, other.m_data);
}
String::~String() {
delete[] m_data;
}
```
接下来是重载赋值运算符:
```c++
String& String::operator=(const String& other) {
if (this == &other) {
return *this;
}
delete[] m_data;
m_length = other.m_length;
m_data = new char[m_length + 1];
strcpy(m_data, other.m_data);
return *this;
}
```
然后是获取字符串长度和返回C字符串:
```c++
int String::length() const {
return m_length;
}
const char* String::c_str() const {
return m_data;
}
```
最后,我们还可以为String类添加其他常用的方法,例如拼接字符串、查找子串等等。
这就是一个简单的String类的设计和实现。希望能对您有所帮助!
阅读全文