深浅拷贝

浅拷贝 :
深浅拷贝_第1张图片
深拷贝:
深浅拷贝_第2张图片
写时拷贝:引入一个计数器,每片不同的空间都有一个计数器组成,在构造第一个类的指向的时候,计数器初始化为1,之后每次都在有新的类也指向同一块空间的时候,就给计数器+1,在析构时判断该片空间对应的计数器是否为1,为1在执行清理工作,否则对计数器-1.
深浅拷贝_第3张图片
三种引用计数方案
class String1{
private:
       char* _str;
       static int _refCount;//静态变量,出作用域不改变_refCount的值,能一直使用,可以随时跟随状态进行++--,但是只有一个,如果有俩个空间需要进行引用计数的时候就会有些局限性
};
//方案2
class String2{
private:
       char* _str;
       int _refCount;//这种方法很不方便,不停的需要手动更新refCount的值,而且出作用域就使用不了的。
};
//方案3
class String3{
private:
       char* _str;
       int* _refCount;//直接声明指针变量,要对那块空间标注引用计数,直接把指针指向那块空间就行。
};

你可能感兴趣的:(c++)