LINUX.ORG.RU

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


0

0

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

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

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

generatorglukoff ★★ ()

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

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

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

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

alex_custov ★★★★★ ()
Ответ на: Re: Сигналы-слоты Qt и их виртуальность от one_more_hokum

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

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

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

teferiincub ()
Ответ на: Re: Сигналы-слоты Qt и их виртуальность от one_more_hokum

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

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

teferiincub ()

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

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

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