У меня есть выход таким образом:
поддерживает динамическое связывание через виртуальный механизм. Но, как я понимаю, виртуальный механизм - это деталь реализации компилятора, и стандарт просто определяет поведение того, что должно происходить при определенных сценариях. Большинство компиляторов реализуют виртуальный механизм через виртуальную таблицу и виртуальный указатель. И да, я знаю, как это работает, поэтому мой вопрос не о деталях реализации виртуальных указателей и таблиц. Мои вопросы:
Существуют ли какие-либо компиляторы, которые реализуют Виртуальный механизм любым другим способом, кроме механизма виртуальных указателей и виртуальных таблиц? Насколько я видел, большинство (читай g ++, Microsoft visual studio) реализуют это через виртуальную таблицу, механизм указателей. Так есть ли вообще какие-либо другие реализации компилятора?sizeof
любого класса с только виртуальной функцией будет размер указателя (vptr внутриthis
) на этом компилятореИтак, учитывая, что сам виртуальный механизм ptr и tbl является реализацией компилятора, будет ли это утверждение, которое я сделал выше, всегда верным?