«Таблица виртуальных функций» или «таблица виртуальных методов» - это список указателей методов, которые имеют каждый класс. Он содержит указатели на виртуальные методы в классе.
Каждый экземпляр класса имеет указатель на таблицу, который используется, когда вы вызываете виртуальный метод из экземпляра. Это связано с тем, что вызов виртуального метода должен вызывать метод, связанный с классом фактического объекта, а не с классом ссылки на объект.
Если вы, например, иметь ссылку на объект в строку:
object obj = "asdf";
и вызвать виртуальный метод ToString:
string text = obj.ToString();
он будет использовать метод String.ToString, а не объекта. Метод ToString. Он использует таблицу виртуальных методов класса String (на которую указывает указатель в экземпляре строки), а не таблицу виртуальных методов класса Object.
Правильно ли я понимаю, что «таблица методов» создается для любого типа. Таким образом, тип значения также имеет «таблицу методов». И еще один вопрос: как получить тип, который имеет «таблицу методов»? Является ли «таблица методов» сохранена или указана в типе-объекте? Но тип значения не имеет указателя типа объекта. :/Вот связанный с этим вопрос: http://stackoverflow.com/questions/35185528/does-a-value-type-keep-type-pointer-sync-root-static-fields-like-a-reference/35185851# 35185851 – Spirit
@Spirit: Да, у каждого типа есть таблица методов (по крайней мере, в некоторой форме на каком-то этапе). Поскольку вызовы типов значений не являются виртуальными, точные методы определяются во время компиляции, поэтому им не нужна таблица виртуальных методов, для них она должна существовать только в исполняемом файле для целей отражения. Я не знаю, где фактически хранятся таблицы методов, которые будут зависящими от реализации, поэтому вы будете искать в исходном коде рамки для этого (однако эта часть реализации может быть не публичной). – Guffa
Спасибо. Ваш ответ на ваш вопрос очень ясен. Я, наконец, нашел аналогичную дискуссию SO: http://stackoverflow.com/questions/926352/how-is-valuetype-gettype-able-to-determine-the-type-of-the-struct – Spirit