QT QString类隐式共享

QString类隐式共享:
当多个QString类的数据块是一样的时候, 在构造时使用指针,指向同一块保存数据的内存区,不做深拷贝,同时对这块数据的引用计数加一操作,当有一个QString释放或修改数据时,这个数据块的引用计数进行减一操作, 这种实现最大化资源有效利用和最小化复制克隆操作,同时安全而且效率很高,大大降低对内存的开销及CPU资源的消耗,很大程度提高应用程序的运行效率。
 
QString s0 = "hello";//构造QString对象,同时对他的引用计数count加一  
QString s1 = s0;     //使用s0的引用对s1做浅拷贝构造,同时hello数据块的引用计数加一(等于2)
QString s2 = s0;     //使用s0的引用对s2做浅拷贝构造,同时hello数据块的引用计数加一(等于3)
s2 = "hi";   //调用赋值函数对s2做深拷贝,同时对hello的数据引用减一(等于2),对hi的数据引用计数加一(等于1)
QString s3 = s0;     //使用s0的引用对s3做浅拷贝构造,同时hello数据块的引用计数加一(等于3)  QString s4 = s2;     //使用s2的引用对s4做浅拷贝构造,同时hi数据块的引用计数加一(等于2)
QString s5 = s2;     //使用s2的引用对s1做浅拷贝构造,同时hi数据块的引用计数加一(等于3)
:
当多个QString类的数据块是一样的时候, 在构造时使用指针,指向同一块保存数据的内存区,不做深拷贝,同时对这块数据的引用计数加一操作,当有一个QString释放或修改数据时,这个数据块的引用计数进行减一操作, 这种实现最大化资源有效利用和最小化复制克隆操作,同时安全而且效率很高,大大降低对内存的开销及CPU资源的消耗,很大程度提高应用程序的运行效率。
 
QString s0 = "hello";//构造QString对象,同时对他的引用计数count加一  
QString s1 = s0;     //使用s0的引用对s1做浅拷贝构造,同时hello数据块的引用计数加一(等于2)
QString s2 = s0;     //使用s0的引用对s2做浅拷贝构造,同时hello数据块的引用计数加一(等于3)
s2 = "hi";   //调用赋值函数对s2做深拷贝,同时对hello的数据引用减一(等于2),对hi的数据引用计数加一(等于1)
QString s3 = s0;     //使用s0的引用对s3做浅拷贝构造,同时hello数据块的引用计数加一(等于3)  QString s4 = s2;     //使用s2的引用对s4做浅拷贝构造,同时hi数据块的引用计数加一(等于2)
QString s5 = s2;     //使用s2的引用对s1做浅拷贝构造,同时hi数据块的引用计数加一(等于3)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值