本片文章是对 string 进行模拟实现,从上一篇文章的实现部分继续进行书写。将会实现构造函数的深拷贝以及传统写法与现代写法、容量操作、迭代器以及对对象的修改操作。
1. 构造函数(续)
在上一个章节我简单的实现了,全缺省的构造函数,以及进行打印遍历的操作。接下来我将会实现深拷贝的"拷贝构造"以及"赋值的重载"。
1.1 传统写法
拷贝构造步骤为:1.开辟空间 2.对内容进行拷贝。
赋值构造: 1.判断是否为自己给自己赋值 2.开辟空间变量,对内容进行拷贝
//拷贝构造1.0
string(const string& str)
:_str(new char[str.capacity() + 1])
{
_capacity = str.capacity();
_size = str.size();
strcpy(_str, str._str);
}
//使用深拷贝实现赋值
string& operator=(const string& s)
{
if (this != &s)
{
string tmp(s._str);
string tmp(s);
swap(tmp);
}
return *this;
}
1.2 现代写法