String定义
是一个模版:
template<class _E, class _Tr=char_traits<_E>, class _A=allocator<_E> >
class Mybasic_string
空间分配
先去增长空间_Grow,32个空间,额外增加一个\0;头部是引用计数最大是255(char最大值)。
然后调用copy方法。
深度拷贝和浅拷贝
浅拷贝:
把string s1=s;
把s1的ptr指向s的ptr,并把ptr指向的空间的头部元素的引用计数++;
当要释放的时候,如果引用计数不为0,就不去释放空间,至少减少引用计数。
深度拷贝:
如果要修改对象的时,必须要进行深度拷贝;否则修改空间的数据,所有的对象的都被修改了。
深度拷贝,必须重新开辟空间,并进行拷贝,并被冻结,引用计数被设置为255,不允许浅拷贝。