shallow copy (浅拷贝)是一种节省资源的方式,是一种write_on_copy,qt中很多的类(大部分是内存分配需要很多的类)都实现了shallow copy,比如 qimage类,让两个实例qimage a和qimage b,令a=b,则事实上,a并没有完全复制了一份b的所有信息,它只是在计数器上增加了一个对同一片内存的指向(当然也并非指针相等),如果a和b之中没有人进行改变,将一直共享一份内容,但当其中过一个发生改变时,它会自动复制一份这份信息的内容,作为自己的无论怎样修改都行,也不回影响到其他的实例。
比如Qimage*a -new Qimage(); QImage b=*a;delete a,这个过程时这样的,开始a初始化了一块内存来表示一个qimage,然后b和a公用这个信息,计数器变为2,最后a不在了,计数器变一,b独享这份内容,此时a和b初始时的地址时一样的。
时间: 2024-09-18 10:19:05