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