Я видел ниже в стандарте С++ (§9.5/1):
Союз не должен иметь базовые классы. Союз не должен используется как базовый класс.
Объединение может иметь функции-члены (включая конструкторы и деструкторы), но не виртуальные (10.3) Функции
Сверху объединение также может иметь конструктор и деструктор.
Так почему это не допустимо в наследовании?
EDIT: для ответа на комментарии:
-
Если объединение разрешено в качестве базового класса, его данные могут использоваться производным классом. Если производному классу интересно использовать только один член объединения, этот способ можно использовать для сохранения памяти. Я думаю, это ненадлежащее наследование. В этом случае лучше иметь союз внутри производного класса?
-
Если union разрешен как производный класс, он может использовать службы базового класса. Например, если Union имеет несколько типов данных. Как известно, можно использовать только один тип данных. Для каждого типа данных существует базовый класс для предоставления услуг для этого конкретного типа. В этом случае множественное наследование может использоваться для получения услуг всех базовых классов для всех типов данных в Союзе. Это также я чувствую как ненадлежащее использование наследования. Но есть ли эквивалентная концепция для достижения контента в этой точке?
Просто мои мысли...