RTTI повышает объем скомпилированной программы, добавляя к каждому классу имеющему таблицу виртуальных функций доп. информацию о типе.
Насчет компиляторов ну не знаю, по моему уже все корректно поддерживают, на дворе 21 век.
Скорость работы кода не использующего C++ RTTI не снижаетcя,
но естественно
QListViewItem* item = ....;
if ( item && item->rtti() == 1 ) {
QCheckListItem* checkItem = (QCheckListItem*) item;
bool on = checkItem->isOn();
}
будет быстрей чем
QListViewItem* item = ....;
if ( (QCheckListItem *ch=dynamic_cast<QCheckListItem*>(item)) != 0 ) {
bool on = ch->isOn();
}
но не думаю что это большой плюс.
Преимущество RTTI очевидно: отсутствие конфликтов между различными наследниками от QCheckListItem.