یکی از کاربردهای union
مربوط به وقتی میشه که میخوایم تو حافظه صرفهجویی کنیم. مثلاً
union
{
int x;
float f;
long int y;
}
این union
به جای ۱۴ (یا ۱۶) بایت حافظه فقط ۸(یا ۶) بایت حافظه میگیره.
ممکنه ادعا کنیم که تو کامپیوترهای امروزی این قدر حافظه زیاد چیزی رو عوض نمیکنه. اما لازمه توجه کنیم که این union
ممکنه عضو کلاسی باشه که از اون کلاس یک میلیارد شی در برنامه ساخته میشه. بنابراین هنوز هم این صرفهجویی مهمه.
یک کاربرد دیگهش اینه که گاهی میخوایم تعدادی از بیتهای حافظه رو در مواقعی دستکاری کنیم. این دستکاری گاهی با عملیات بیتی راحتتره گاهی با عملیات روی دادهی float
، گاهی با عملیات روی دادهی int
و ...
در C++
نمیتونیم نوع متغیر رو در طول عمرش تغییر بدیم. بنابراین اگه یه متغیر یا یک نوع مشخص اعلان شد دیگه نمیتونیم از مزایای یک نوع دیگه در مورد این متغیر استفاده کنیم.
این مشکل اخیر با union
حل شده. ما مثلاً ۸ بایت از حافظه رو در اختیار میگیریم و هر وقت از هر امکانی که بخوایم استفاده میکنیم و مقدار داخل اون ۸ بایت رو تغییر میدیم.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)