Технически не существует такого понятия, как «чисто виртуальный объект».Я предполагаю, что вы имеете в виду объект с чисто виртуальными методами?Но на самом деле вы не можете создать такой объект, потому что он будет абстрактным, а компилятор будет жаловаться.
Сказав это, пока объект создается, он на короткое время является экземпляром абстрактного класса, прежде чем стать экземпляром.производного класса.В этом случае виртуальная таблица будет устанавливать функции, которые она определяет.Вероятно, он будет иметь значение NULL для чисто виртуальных методов.Если вы попытаетесь вызвать, что программа потерпит крах.
Вы можете попробовать это, вызвав виртуальные методы в конструкторе.Вы обнаружите, что они вызывают версию базового класса, если вы вызовете методы базового класса.Если вы вызовете чисто виртуальный метод, он потерпит крах.(В некоторых случаях компилятор выяснит, что вы делаете, и вместо этого будет жаловаться.)
Возьмите домой:
Не вызывайте виртуальные функции в конструкторе, скорее всего, это будетсбивает с толку.На самом деле, в большинстве случаев лучше, если ваш конструктор просто устанавливает свой внутренний статус и не делает ничего слишком сложного.