Почему объявить конструктор как виртуальные бессмысленна?
Перед тем как конструктор выполняется, объект не существует, поэтому нет такого понятия, как переопределение.
Что происходит, когда я вызываю виртуальную функцию из конструктора? Используется ли виртуальная таблица?
Он может. В большинстве случаев, если вызов выполняется непосредственно из конструктора, компилятор может пропустить динамическую отправку, так как он знает, что на данный момент находится конечный переопределитель. Но он не должен выполнять эту оптимизацию, и даже если он может сделать это непосредственно в конструкторе, он не сможет этого сделать, если вы вызываете не виртуальную функцию, которая, в свою очередь, вызывает виртуальную функцию. Поскольку не виртуальная функция может быть вызвана для объектов производных типов, она должна использовать механизм виртуальной диспетчеризации.
Что означает «пройти»? – Beta
Grammar-corrected :) –
Этот связанный вопрос содержит некоторую полезную информацию: http://stackoverflow.com/questions/962132/calling-virtual-functions-inside-constructors – Chad