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