Qt MOC: Когда используется конструктор default и copy?

Я должен добавить свой собственный тип в Qt MetaObject System (зарегистрировать метатип). Из-за руководства, следующие требования должны быть выполнены:

  • конструктор по умолчанию
  • конструктор копирования
  • деструктор

Мой класс не имеет смысла с конструктором по умолчанию; он будет создан только для удовлетворения требований QT MOS. Однако: как, когда и почему Qt вызывает ctor по умолчанию? Что произойдет, если мой класс сохранит указатели на динамически созданные элементы: создаст ли MOS копию такого класса, а затем удалит ее и освободит все указатели?

0

Решение

MOS создаст копию такого класса, а затем удалит ее и освободит все указатели?

Да, при объявлении событий они сначала копируются. Это делается таким образом, чтобы упростить отправку событий из одного потока в другой.

Что произойдет, если мой класс сохранит указатели на динамически созданные элементы: создаст ли MOS копию такого класса, а затем удалит ее и освободит все указатели?

Вот для чего нужен пользовательский конструктор копирования. Это ваша задача, чтобы убедиться, что все копируется нормально, и утечка памяти (или другая проблема) невозможна.


Наконец, я нашел, где это говорит. Он находится в эта ссылка :

Необязательный параметр type описывает тип устанавливаемого соединения. В частности, он определяет, доставляется ли конкретный сигнал в слот немедленно или ставится в очередь для доставки в более позднее время. Если сигнал находится в очереди, параметры должны быть типов, которые известны мета-объектной системе Qt, потому что Qt необходимо скопировать аргументы, чтобы сохранить их в событии за сценой. Если вы попытаетесь использовать подключение в очереди и получите сообщение об ошибке

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]