LINUX.ORG.RU

Сигналы-слоты Qt и их виртуальность


0

0

После обработки MOC-ом сигналы и слоты (как я понял) разворачиваются в обычные функции. Если дать сигналу или слоту квалификатор виртуальности -- не вызовет-ли это каких-нить артефактов трудноуловимых? Никто не сталкивался с подобным извращением?

насчет сигналов не уверен, а вот слоты - это ж вроде обычные виртуальные функции-коллбеки

generatorglukoff ★★
()

>>После обработки MOC-ом сигналы и слоты (как я понял) разворачиваются в обычные функции

Это и есть обычные функции, просто дополнительные макросы signals: и slots: помогают moc'у с созданием метаинформации и прочего.

Если виртуальности тебе нужна - делай virtual. Если не нужна - не делай. Полиморфизм тут действует точно также как и обычно.

alex_custov ★★★★★
()
Ответ на: комментарий от one_more_hokum

Трольтехи не рекомендуют делать слоты виртуальными. Как тебе наверное известно вызов слота примерно в 10 раз медленне прямого вызова функции(это обусловлено тем что нужно аккуратно все аргументы передать в том числе между различными потоками(ты же помнишь про последний аргумент функции QObject::connect())).

А если слот к тому же и виртуальный - это даст нам снижение скорости ещё на порядок. Но каких-то принципиальных препятствий к этому в библиотеке нет.

teferiincub
()
Ответ на: комментарий от one_more_hokum

Ну как бы если ты читал внимательно ассистант, то они там пишут что эта разница в 10 раз становится совсем незаметной, когда в слоте выполняется что-нибудь связанное с дин. памятью - (new или delete) да и в конце концов не так уж это и страшно и правда - можно подзабить ;)

teferiincub
()

а нафига виртуальный сигнал? в чем логика-то?

xydo ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.