Иерархия наследования: последовательность выполнения конструктора и деструктора

Здесь http://www.parashift.com/c++-faq-lite/multiple-inheritance.html раздел [25.14] говорит

Самые первые конструкторы, которые должны быть выполнены являются виртуальными базовыми классами где угодно в иерархии.

Я попытался проверить это с помощью следующей программы:

           A (pure virtual)
           |
           B
           |
           C
(virtual)/   \ (virtual)
       E       D
         \   /
           F
           |
           G (pure virtual)
           |
           H

каждый класс имеет c'tor и virtual d'tor. вывод выглядит следующим образом:

A
B
C
E
D
F
G
H
~H
~G
~F
~D
~E
~C
~B
~A
Press any key to continue . . .

но согласно цитате конструкторы виртуальных базовых классов должны быть выполнены в первую очередь.

что я понял неправильно?

EDIT: Чтобы очистить мой вопрос, согласно моему пониманию этого поведения не имеет никакого отношения к тому, является ли базовый класс виртуальным или нет. но цитата настаивает на виртуальном базовом классе . Я ясно или что-то подозрительное?

6
задан Cœur 24 November 2019 в 07:00
поделиться