Являются ли виртуальные таблицы частью стандарта C++?
Я читаю о реализации полиморфизма позднего связывания в C++ и узнал о виртуальных таблицах и виртуальных указателях.
Затем я искал стандарт C++ ( ISO / IEC 14882: 2011), чтобы получить больше информации о том, как это поведение должно быть реализовано.
К сожалению, я не нашел ничего значимого в этом широком стандарте, кроме определения Виртуальных функций в §10.3, поэтому я предполагаю концепцию __vptr
используется GCC, но может быть реализован по-другому.
Есть ли стандарт или документ, в котором описывается, как виртуальные методы должны быть реализованы?
1 ответ
Нет, они не определены стандартом. Вместо этого они представляют собой концепции реализации, скорее как стек или куча.
Стандарт помогает разрешить реализацию полиморфизма определенным образом, например, адрес первой переменной-члена class
не обязательно должен быть адресом экземпляра этого класса, если этот класс является полиморфным типом.