隐式共享又称为回写机制,当两个对象共享同一份数据,如果数据不改变,则不进行数据的复制。而当某个对象需要改变数据时,则执行深拷贝。
深拷贝:生成对象的一个完整的复制品。
浅拷贝:是一个引用复制(如 仅复制指向共享数据的指针)
隐式共享可以降低对内存和CPU资源的使用,提高程序的运行效率。它使得在函数中(如参数、返回值)使用值传递更有效率。
例:
QString str1 = "data";
QString str2 = str1;
str2[3] = 'e';
str2[0] = 'f';
str1 = str2;
其中,
(1)QString str2 = str1; 把字符串对象str1赋值给str2(由QString的复制构造函数完成str2的初始化),此时,str2 = “data”。在对str2赋值的时候偶,将发生一次浅拷贝,导致两个QString对象都指向了同一个数据结构。
(2)str2[3] = ‘e