#include<iostream>// union: all the members are sharing the same memory address.// it can only occupy the memory of one member at a time.// the size of struct with 4 float is 16, the size of union with 4 float would still be 4 bytes.// can't have virtual methods and usually used anonymously.// really useful when you want multiple ways to address that same data.structVector2{float x, y;};structVector4{// example:treating Vector4 as 2 Vector2 by using union.union{// first member.struct// wrap these 4 members in an anonymous struct.{float x, y, z, w;};// second member.struct{
Vector2 a, b;// now a would be the same memory as x and y.};};};voidPrintVector2(const Vector2& vector){
std::cout <<"vector.x = "<< vector.x <<", "<<"vector.y = "<< vector.y << std::endl;}intmain(void){structTestUnion{union// 2 different way to address the same memory.{float a;int b;};};
TestUnion u;
u.a =2.0f;
std::cout <<"u.a = "<< u.a <<", "<<"u.b = "<< u.b << std::endl;
Vector4 vector ={1.0f,2.0f,3.0f,4.0f};PrintVector2(vector.a);PrintVector2(vector.b);
vector.z =500.0f;
std::cout <<"--------------------------"<< std::endl;PrintVector2(vector.a);PrintVector2(vector.b);
std::cin.get();}