【C++】string类浅拷贝的解决方式

1.浅拷贝

  • 对内存地址的复制,让目标对象指针和源对象指向同一片内存空间,最终在释放的时候造成了多次释放导致程序崩溃
  • 如果类中设计到资源管理时,用户必须要显式实现拷贝构造函数以及赋值运算符重载,因为编译器默认是按照浅拷贝的方式生成的
    【C++】string类浅拷贝的解决方式_第1张图片

 

2.深拷贝

  • 让每个对象都独立拥有自己的资源—即当发生拷贝构造或赋值时,让每个对象管理自己的资源即可
    【C++】string类浅拷贝的解决方式_第2张图片
     

3.写时拷贝:浅拷贝+引用计数

【C++】string类浅拷贝的解决方式_第3张图片

  • 一旦s2要将空间中的内容改变,那么就深拷贝一份给s2,然后在改变s2中的内容,s1中的引用计数-1

【C++】string类浅拷贝的解决方式_第4张图片

你可能感兴趣的:(#,stl,C++,stl,string)