Мы всегда объявляем чистую виртуальную функцию:Почему чистая виртуальная функция инициализируется 0?
virtual void fun() = 0 ;
Т.е., он всегда присваивается значение 0.
То, что я понимаю, что это инициализировать виртуальные таблицы записи для этой функции NULL и любой другое значение здесь приводит к ошибке времени компиляции. Правильно ли это понимание?
Обратите внимание, что виртуальные таблицы не является обязательным требованием языка, а только вариант реализации виртуальных методов.Компилятор мог создать ту же абстракцию с другой реализацией (то есть без vtable и без какого-либо элемента, имеющего 0) –
@hype Повторите свой дополнительный вопрос - вот что говорит мой ответ (и несколько других). – 2010-01-28 18:34:52