Альтернативная виртуальная реализации вызовов функций?

C ++ поддерживает динамическое связывание через виртуальный механизм. Но насколько я понимаю, виртуальный механизм - это деталь реализации компилятора, а стандарт просто определяет поведение того, что должно происходить в определенных сценариях. Большинство компиляторов реализуют виртуальный механизм через виртуальную таблицу и виртуальный указатель. Речь идет не о деталях реализации виртуальных указателей и таблиц. Мои вопросы:

  1. Существуют ли какие-либо компиляторы, которые реализуют динамическую отправку виртуальных функций каким-либо другим способом, кроме виртуального указателя и механизма виртуальной таблицы? Насколько я видел, большинство (читайте G ++, Microsoft Visual Studio) реализует его через виртуальную таблицу, механизм указателя. Итак, существуют ли вообще какие-либо другие реализации компилятора?
  2. sizeof любого класса с виртуальной функцией будет размером указателя (vptr внутри this ) на этом компиляторе . Итак, учитывая, что виртуальный указатель и сам механизм TBL является реализацией компилятора, будет ли это утверждение, которое я сделал выше, всегда быть верным?
48
задан curiousguy 19 November 2019 в 19:20
поделиться