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