Здесь 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: Чтобы очистить мой вопрос, согласно моему пониманию, это поведение не имеет никакого отношения к тому, является ли базовый класс виртуальным или нет.но цитата настаивает на Виртуальный базовый класс .Я ясно или что-то подозрительное там?
Спасибо.