【发布时间】:2015-02-25 19:00:32
【问题描述】:
当使用 Qt 容器作为 Qlist、Qvector 等来保存某个类(比如具有许多数据成员和逻辑的复杂类)并调用 insert/append/push_back 时,添加到容器中的对象会被插入到容器中还是它将被复制(cctor)?
假设它被复制了,那么如果我动态分配它并传递一个指针,那么只有指针会被复制?如果我传递对象本身,那么我需要释放我之前分配的内存,因为对象被复制了?
我可以提供一些官方文档,所以我在这里问...
谢谢
【问题讨论】:
-
如果容器的模板类型是指针 - 那么对象将不会被复制。否则 - 将完成一个副本。 QObject children 已禁用复制 ctor,因此您不能将它们放入容器中。我建议你阅读官方文档和一些关于编程的书籍(容器,如 stl,和 RAII)。
标签: qt containers copy-constructor push-back