0

我必须将自己的类型添加到 Qt MetaObject System(注册元类型)。由于手动,必须满足以下要求:

  • 默认构造函数
  • 复制构造函数
  • 析构函数

我的类对默认构造函数没有意义;它将仅为满足 QT MOS 而创建。但是:Qt 如何、何时以及为何调用默认 ctor?如果我的类存储指向动态创建的元素的指针会发生什么:MOS 会创建此类类的副本,然后将其删除并释放所有指针吗?

4

1 回答 1

0

MOS会创建此类的副本,然后将其删除并释放所有指针吗?

是的,在宣布事件时,它们首先被复制。这样做是为了简化从一个线程到另一个线程的事件发送。

如果我的类存储指向动态创建的元素的指针会发生什么:MOS 会创建此类类的副本,然后将其删除并释放所有指针吗?

这就是自定义复制构造函数的用途。您的任务是确保所有内容都被正确复制,并且不会出现内存泄漏(或其他问题)。


最后,我找到了它说话的地方。它在这个链接中:

可选的 type 参数描述了要建立的连接类型。特别是,它确定一个特定的信号是立即传送到一个时隙,还是在稍后的时间排队等待传送。如果信号排队,参数必须是 Qt 的元对象系统已知的类型,因为 Qt 需要复制参数以将它们存储在幕后的事件中。如果您尝试使用排队连接并收到错误消息

于 2013-08-05T12:21:30.227 回答