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)


上一篇:编写函数any(s1,s2),把字符串中s2中的任一在字符串s1中第一次出现的位置作为结果返回,若是不包含就返回-1


下一篇:Leecode no.567 字符串的排列