Одним из золотых правил в C ++ является то, что время жизни экземпляра начинается, когда его конструктор завершается успешно, и заканчивается, когда начинается его деструктор.
Из этого правила мы заключаем, что не рекомендуется вызывать виртуальные методы в конструкторе, поскольку возможный производный экземпляр недопустим, что может привести к неопределенному поведению.
Идиома виртуального конструктора, как упомянуто в C ++ FAQ 20.8 , по-видимому, указывает на обратное.
Мой вопрос:
- Какое точное определение в стандарте для определения времени жизни объектов относительно вызовов их конструкторов и деструкторов?
- и, кроме того, действителен так называемый «виртуальный конструктор Idom»?