Как выглядит объект в памяти?
Ваш вопрос неясен.Есть две соответствующие ячейки памяти.Переменная связана с местом хранения.Это место хранения содержит ссылку на другое место хранения.
Место хранения переменной обычно реализуется как четырех- или восьмибайтовое целое число, которое содержит «управляемый указатель» - адрес памяти, известный сборщику мусора.
Структура памяти объекта также является деталью реализации CLR.Буфер памяти, связанный с объектом, будет содержать все данные для объекта - все значения полей и еще много чего.Он также содержит ссылку на еще одну другую область памяти, таблицу виртуальных функций объекта.
Таблица виртуальных функций (vtable) затем содержит еще больше ссылок , на этот раз ссылки, которые относятся к методам, связанным с наиболее производным типом объекта.
Как лечится виртуальный метод?невиртуальном?
Виртуальные методы выполняются путем поиска ссылки на объект из переменной, затем поиска в vtable, затем поиска метода в vtable и вызова этого метода.
Не виртуальные методы не вызываются через vtable, потому что они известны во время компиляции.
Чем он отличается от ...
Не виртуальные методы, вызываемыеобъект будет вызывать версию метода, основанную на типе переменной .Виртуальные методы, вызываемые для объекта, будут вызывать версию метода, основанную на типе объекта , на который ссылается переменная.
Если это не все ясно, возможно, вы захотите прочитатьмоя статья, в которой объясняется, как можно «эмулировать» виртуальные методы на языке, в котором их нет.Если вы сможете понять, как самостоятельно реализовать виртуальные методы на языке, в котором их нет, это поможет вам понять, как мы на самом деле делаем реализуем виртуальные методы.
http://blogs.msdn.com/b/ericlippert/archive/2011/03/17/implementing-the-virtual-method-pattern-in-c-part-one.aspx