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)