1. 简答题 编写一个完整的字符串类MyString, 使它具有默认构造函数、传指针构造函数、复制构造函数、析构函数、set_string,get_string,get_length,append,复制运算符重载等函数功能
时间: 2024-10-07 17:03:02 浏览: 33
详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数
5星 · 资源好评率100%
当然,我可以为你描述一下如何设计一个名为`MyString`的简单字符串类,它包含上述要求的功能:
```cpp
#include <string>
class MyString {
public:
// 默认构造函数
MyString() : str_("") {}
// 传指针构造函数
explicit MyString(const char* ptr) : str_(ptr) {}
// 复制构造函数
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 MyString& other) {
str_ += other.str_;
}
// 赋值操作符重载(复制)
MyString& operator=(const MyString& other) {
if (this != &other) { // 避免自赋值
str_ = other.str_;
}
return *this;
}
// 复制运算符重载(深拷贝)
friend MyString copy(MyString const & source); // 定义友元函数实现复制
private:
std::string str_;
};
// 复制函数的实现
MyString copy(MyString const & source) {
return MyString(source.str_);
}
```
在这个类中,`copy`函数是一个友元函数,用于实现外部对`MyString`对象的复制。这是为了允许在不使用成员访问权限的情况下复制一个实例。
阅读全文