Middle
33
0
questionbank

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

Answer from sobes.tech neural network

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

Причины:

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

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

Причины:

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

Register or sign in to get access to full answers for all questions from the question bank.

object-oriented-programmingconstructorvirtual-methodsinheritancec++