Являются ли виртуальные таблицы частью стандарта C ++? - PullRequest
4 голосов
/ 23 апреля 2019

Я читаю о реализации полиморфизма позднего связывания в C ++ и узнал о виртуальных таблицах и виртуальных указателях.

Затем я искал по стандарту C ++ ( ISO / IEC 14882: 2011 ), чтобы получить больше информации о том, как это поведение должно быть реализовано.

К сожалению, я не нашел ничего значимого в этом широком стандарте, кроме определения Виртуальных функций в §10.3, поэтому я предполагаю, что концепция __vptr используется GCC, но может быть реализована по-другому.

Существует ли стандарт или статья, в которой описывается, как следует реализовывать виртуальные методы?

1 Ответ

5 голосов
/ 23 апреля 2019

Нет, они не определены стандартом.Вместо этого они представляют собой реализацию концепций, скорее как стек или куча .

Стандарт полезен для разрешения реализации полиморфизмавыполняется определенным образом, например, адрес первой переменной-члена class не обязательно должен быть адресом экземпляра этого класса, если этот класс является полиморфным типом.

...