编写一个完整的字符串类MyString, 使它具有默认构造函数、传指针构造函数、复制构造函数、析构函数、set_string, get_string,get_len gth, append,复制运算符
时间: 2024-10-07 15:02:54 浏览: 41
在C++中,我们可以创建一个名为`MyString`的自定义字符串类,以满足您的需求。这里是一个基本的设计示例:
```cpp
#include <iostream>
#include <string>
class MyString {
public:
// 默认构造函数
MyString() : str_("") {}
// 传指针构造函数
MyString(const char* str) : str_(str) {}
// 复制构造函数
MyString(const MyString& other) : str_(other.str_) {}
~MyString() {} // 析构函数
// 设置字符串成员变量
void set_string(const std::string& new_str) {
str_ = new_str;
}
// 获取字符串成员变量
const std::string& get_string() const {
return str_;
}
// 获取字符串长度
int get_length() const {
return str_.length();
}
// 追加操作
void append(const std::string& append_str) {
str_ += append_str;
}
// 复制运算符
MyString operator=(const MyString& other) {
if (this != &other) { // 防止自我赋值
str_ = other.str_;
}
return *this;
}
private:
std::string str_; // 存储字符串的变量
};
int main() {
MyString str1; // 使用默认构造函数
std::cout << "Default constructed string length: " << str1.get_length() << std::endl;
MyString str2("Hello"); // 使用传指针构造函数
std::cout << "Constructed with pointer: " << str2.get_string() << ", length: " << str2.get_length() << std::endl;
MyString str3 = "World"; // 复制构造函数
str1.append(str3);
std::cout << "Appended string: " << str1.get_string() << ", length: " << str1.get_length() << std::endl;
return 0;
}
```
在这个例子中,我们定义了一个名为`MyString`的类,包含了您提到的各种功能。在`main()`函数中,展示了如何通过各种构造函数创建并操作`MyString`对象。
阅读全文