Стоимость полиморфных вызовов -C++

Я пишу игру на C++, в которой есть около 30 разных ролей, каждая из которых немного отличается. У меня есть пользователь основного класса, который содержит все данные, необходимые для всех ролей. Моя первая реализация включала просто перечисление 30 ролей и соответствующую обработку, но теперь мне интересно, было бы лучше иметь User в качестве базового класса и каждую роль в качестве собственного класса, наследуемого от User.

Меня больше всего беспокоит, насколько эффективны вызовы полиморфных методов, когда имеется более 30 классов, наследуемых от одного базового класса? Я знаю, что полиморфные вызовы включают указатели в виртуальной таблице, но я не уверен, означает ли это линейный поиск по всей таблице для правильного метода или это можно сделать за постоянное время.

Если бы кто-нибудь мог прокомментировать эффективность вызовов полиморфных методов со многими унаследованными классами, я был бы признателен за просветление.

Заранее спасибо!

8
задан Josh Brittain 15 April 2012 в 23:27
поделиться