crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Опять про нисходящее приведение, дизайн и т.п.
hoRUS
  опции профиля:
сообщение 16.8.2011, 15:16
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 10.7.2008
Из: Москва
Пользователь №: 231

Спасибо сказали: 5 раз(а)




Репутация:   0  


Никак не могу найти толкового ответа, что же лучше, "правильнее" (с архитектурной точки зрения), использовать для даункастинга в Qt-проектах - dynamic_cast или qobject_cast? В проекте, допустим, нет ограничений на использование RTTI, кастовать через границы динамических библиотек, допустим, не требуется, интересует прежде всего производительность на большинстве платформ (прежде всего Linux x86 + GCC) и архитектурная обоснованность (хотелось бы послушать опытных) того или иного подхода. Кастуются наследники QObject с макросом Q_OBJECT и интерфейсы, обработанные макросом Q_DECLARE_INTERFACE().

Или лучше вообще избегать динамического даункастинга и обходиться виртуальными функциями? Например, в базовом классе определять enum с константами, присвоенными разным типам наследников и виртуальной ф-цией возвращать тип и, осонвываясь на этом типе, статик-кастом делать приведение? Это сильное издевательство над ООП? dynamic_cast "внутри" работает не похожим способом? Слышал, что он может быть реализован не на vtable, а на сравнении строк strcmp() - это звучит страшно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 20:52