m G”), mC’in G”) { cout « “G “

Автор admin Вторник, 16 июня 2009 11:32

m G”), mC’in G”) { cout « “G ” « s « endl; } }: Каждый класс содержит вложенный объект типа М. Отметьте, что виртуальными являются лишь четыре наследования: Е от В и С, а также F от В и С. Результат выполнения программы выглядит так: М in В В from G М in С С from G М in А A from Е 462 Глава 9 • Множественное наследование М in Е Е from G М in D D from F М in F F from G M in G G from main Инициализация g требует предварительной инициализации подобъектов Е и F, но сначала должны быть инициализированы подобъекты В и С, поскольку они относятся к виртуальным базовым классам и инициализируются по списку инициализации G, последнего производного класса в иерархии. Класс В не имеет базовых классов, поэтому по правилу 3 инициализируется его вложенный объект т, после чего конструктор выводит сообщение В from G; то же происходит с подобъектом С в Е. Подобъект Е требует инициализации подобъектов А, В и С. Поскольку подобъекты В и С уже были инициализированы, следующим инициализируется подобъект А подобъекта Е, а затем — сам подобъект Е. Далее сценарий повторяется для подобъекта F объекта д, но без дублирования иници


Комментарии закрыты.