Мне интересно, каковы различия между вариантом Boost и типом данных union
в c/C++. Я знаю, что тип данных union
занимает то же место в памяти, и самый большой тип данных в области памяти занимает общий объем используемой памяти, например.Boost Variant по существу Союз в c/C++?
union space {
char CHAR;
float FLOAT;
int INTEGER;
}S;
должен занимать 4 байта памяти, так как int
и float
являются самым крупным и одинаковым размером. Существуют ли сходства и различия между другими способами между Boost Variant и union
типами данных? Я также знаю, что Boost Variant может принимать любые типы данных и позволяет использовать тип данных «полиморфизм» (исправьте меня, если я неправильно использую слово для темы ООП). Является ли тип данных объединения таким же типом полиморфизма?
Что такое «UB» и «POD»? – pandoragami
@ user2555139 Неопределенное поведение и обычные старые данные (типы) – Rapptz