Прошу помочь с тестом по C++

1) Может ли быть виртуальная функция у объединения?

а) да, может
б) нет, не может
с) может, но с ограничениями

2) Может ли быть виртуальная функция у перечислимого типа?

а) да, может
б) нет, не может
с) может, но с ограничениями

3) Основная проблема множественного наследования состоит в

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

Заранее благодарен за ответы.

Какой-то тест однообразный.. .

б
б
б

Николай Веселуха прав на две трети. Ответы на первые два вопроса - действительно б) . Согласно стандарту С++, объединение (union) нельзя использовать в иерархии классов ни как базовый класс, ни как наследуемый класс. Ни о каких виртуальных функциях тем более не может идти речи. То же самое относится и к перечислимому типу (enum).

Но ответ на третий вопрос - в) . Явно указывать, к какому базовому классу принадлежит метод, нужно только в том случае, если методы с одним и тем же именем имеются в обоих базовых классах. Это неудобно, но это меньшая неприятность, чем возможность того, что базовые классы в свою очередь наследуют из одного и того же "супербазового" класса. В этом случае в производном классе ВСЕ методы и ВСЕ члены "супербазового" класса оказываются сдублированными в производном классе. Чтобы этого избежать, пользуются так называемым виртуальным наследованием.