C++ Union

Declare a 'union' in C++?

Union Declaration

A union is a user-defined data type that allows you to define a structure where all members share the same memory space. Unlike structures, where each member has its own separate memory space, members of a union occupy the same memory location. The size of a union is determined by the size of its largest member.

Here's the basic syntax for declaring a union in C++:

union MyUnion {
    // Members share the same memory space
    int member1;
    double member2;
    char member3;
    // ... more members if needed
};

Let's break down the components:

'union': This keyword is used to define a union in C++.

'MyUnion': This is the name of the union. You can choose any valid identifier as the union name..

'{ /* Members */ }': This block contains the members of the union. Each member is declared with its data type and a name. In the example above, 'member1' is an integer, 'member2' is a double, and 'member3' is a character. You can add more members as needed.

Here's an example of how to use a union in C++:

cpp Copy Code
#include<iostream>

union MyUnion
{
    int member1;
    double member2;
    char member3;
};

int main()
{
    MyUnion myObject;

    myObject.member1 = 42;
    myObject.member2 = 3.14;
    myObject.member3 = 'A';

    // Display the values
    std::cout << "Member 1: " << myObject.member1 << std::endl;
    std::cout << "Member 2: " << myObject.member2 << std::endl;
    std::cout << "Member 3: " << myObject.member3 << std::endl;

    // Display the size of the union
    std::cout << "Union Size: " << sizeof(MyUnion) << " bytes" << std::endl;

    return 0;
}

In this example, the members of the union ('member1', 'member2', and 'member3') share the same memory space. Modifying one member may affect the values of the other members.

Output:
Member 1: 1374389569
Member 2: 3.14
Member 3: A
Union Size: 8 bytes

Note: That the size of the union is determined by the size of its largest member ('double' in this case).

What is New?

We have just updated this website & still working on adding new content & updating existing features.