gpt4 book ai didi

c++ - QList 什么时候发生深拷贝?

转载 作者:可可西里 更新时间:2023-11-01 15:07:01 32 4
gpt4 key购买 nike

在我正在学习的类(class)中,我正在处理几个 QList。我听说 Qt 尽可能不制作列表的深层拷贝。据我了解,这意味着当您执行此操作时不会发生深层复制:

QList<int> myList;
myList << 1 << 2 << 3 << 4;
QList<int> otherList = myList; // No deep copy

在某些情况下,我需要确保 QList 永远不会发生深度复制。我究竟需要确保避免哪种操作或操作,以确保深度复制永远不会发生在我正在使用的 QList 上?

最佳答案

QList 是使用 implicit sharing 实现的.

Object assignment (with operator=()) for implicitly shared objects is implemented using shallow copies.

这意味着单独赋值永远不会导致复制包含的数据。但是,写入共享实例导致复制源对象。这种模式通常称为写时复制。

所以,为了回答您的问题,如果您从不写入共享实例,那么它们将永远不会被复制。如果你想完全阻止复制,那么从 QList 派生并覆盖和隐藏复制构造函数和赋值运算符。

关于c++ - QList 什么时候发生深拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866183/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com