使用c++编写一个完整的字符串类MyString, 使它具有默认构造函数、传指针构造函数、复制构造函数、析构函数、set_string,get_string,get_length,append,复制运算符重载等函数功能
时间: 2024-09-27 08:06:14 浏览: 53
在C++中,我们可以创建一个名为`MyString`的自定义字符串类,包含上述提到的功能。下面是一个简单的示例:
```cpp
#include <iostream>
#include <string>
class MyString {
public:
// 默认构造函数
MyString() : str("") {}
// 传指针构造函数
explicit MyString(const char* s) : str(s) {}
// 复制构造函数
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();
}
// 追加操作(append)
void append(const MyString& other) {
str += other.str;
}
// 复制赋值运算符重载
MyString& operator=(const MyString& other) {
if (this != &other) { // 防止自我赋值
str = other.str;
}
return *this;
}
// 字符串连接操作(通过流插入运算符)
friend std::ostream& operator<<(std::ostream& os, const MyString& s);
private:
std::string str; // 存储字符串
};
// 输出到流的重载
std::ostream& operator<<(std::ostream& os, const MyString& s) {
os << s.get_string();
return os;
}
int main() {
MyString str1("Hello");
MyString str2("World");
str1.set_string("C++ String Test");
str1.append(str2);
std::cout << "Length: " << str1.get_length() << "\n";
std::cout << str1 << '\n'; // 输出整个字符串
return 0;
}
```
在这个例子中,我们创建了一个`MyString`类,包含了各种常见的字符串处理功能。当你运行`main`函数时,可以看到类的行为如何工作。
阅读全文