在我正在上的一堂课上,我正在同时处理几个问题QList
s。我听说 Qt 尽可能不进行列表的深层复制。据我了解,这意味着执行此操作时不会发生深层复制:
QList<int> myList;
myList << 1 << 2 << 3 << 4;
QList<int> otherList = myList; // No deep copy
在某些情况下,我需要确保深复制永远不会发生在QList
。为了确保深度复制永远不会发生,我需要确保避免什么样的操作或动作?QList
我正在和?
QLists 是使用实现的隐式共享.
隐式共享对象的对象分配(使用operator=())是
使用浅拷贝实现。
这意味着单独的赋值永远不会导致所包含的数据被复制。但是,写入共享实例will导致源对象被复制。这种模式通常称为写时复制。
因此,为了回答您的问题,如果您从不写入共享实例,那么它们将永远不会被复制。如果您想完全阻止复制,则从 QList 派生并覆盖并隐藏复制构造函数和赋值运算符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)