Middle
28
0
questionbank

Может ли конструктор быть виртуальным методом?

Ответ от нейросети sobes.tech

Нет, конструктор не может быть виртуальным методом.

Причины:

  1. На момент вызова конструктора объект еще не полностью построен. V-table (таблица виртуальных функций) инициализируется после завершения работы конструктора базового класса и в процессе работы конструктора производного класса. Вызов виртуальной функции требует наличия корректной v-table.
  2. Виртуальность используется для вызова функций производных классов через указатель или ссылку на базовый класс. Конструктор вызывается явно по имени класса, а не через указатель/ссылку на объект. Невозможно иметь указатель или ссылку на "неполностью построенный" объект для вызова его

Нет, конструктор не может быть виртуальным методом.

Причины:

  1. На момент вызова конструктора объект еще не полностью построен. V-table (таблица виртуальных функций) инициализируется после завершения работы конструктора базового класса и в процессе работы конструктора производного класса. Вызов виртуальной функции требует наличия корректной v-table.
  2. Виртуальность используется для вызова функций производных классов через указатель или ссылку на базовый класс. Конструктор вызывается явно по имени класса, а не через указатель/ссылку на объект. Невозможно иметь указатель или ссылку на "неполностью построенный" объект для вызова его

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

object-oriented-programmingconstructorvirtual-methodsinheritancec++