Functions within Unions

In addition to data, unions can contain functions. Union functions are instantiated just like variables through the dot operator, or through the arrow (->) operator in case a union is referred to through a pointer. Union definition:
union charAndint
{
     char c;
     int l;
     void printValues()
     {
           cout << "c is: " << c << "   i is: " << i << endl;   
     }
};
Union instantiation:
charAndint union1;
union1.printValues();
using a pointer:
charAndint *p;
p = &union1;
p->printValues();


Example


#include <iostream>
using namespace std;

union charAndint
{
     char c;
     int i;

     void setc(char aChar)
     {
           c = aChar;
     }

     void seti(int anInt)
     {
           i = anInt;
     }  

     void printValues()
     {
           cout << "c is: " << c << "   i is: " << i << endl;   
     }
};

int main()
{
     charAndint union1;

     union1.seti(0);
     union1.setc('k');
     union1.printValues();

     charAndint *p;  // pointer to a union
     p = &union1;
     p->printValues();
}

Output

c is: k   i is: 107
c is: k   i is: 107