【ThinkingInC++】37、更安全的union可以封装在一个类中

来源:互联网 发布:几何刚度矩阵 编辑:程序博客网 时间:2024/06/12 00:13
/*** 书本:【ThinkingInC++】* 功能:更安全的union可以封装在一个类中* 时间:2014年9月6日14:53:04* 作者:cutter_point*/#include<iostream>using namespace std;class SuperVar{    //enum没有类型名(他是一个没有加标记的枚举),如果想立即定义enum的实例时,    //这种做法是可取的    enum {character, integer, floating_point}vartype;    union    {        char c;        int i;        float f;    };public:    SuperVar(char ch);    SuperVar(int ii);    SuperVar(float ff); //重载    void print();};/*SuperVar(char ch);SuperVar(int ii);SuperVar(float ff); //重载void print();*///SuperVar(char ch);SuperVar::SuperVar(char ch){    vartype=character;    c=ch;}//SuperVar(int ii);SuperVar::SuperVar(int ii){    vartype=integer;    i=ii;}//SuperVar(float ff); //重载SuperVar::SuperVar(float ff){    vartype=floating_point;    f=ff;}//void print();void SuperVar::print(){    switch(vartype)    {    case character:        cout<<"character: "<<c<<endl;        break;    case integer:        cout<<"integer: "<<i<<endl;        break;    case floating_point:        cout<<"float: "<<f<<endl;        break;    }}int main(){    SuperVar A('c'), B(12), C(1.44f);    A.print();    B.print();    C.print();    return 0;}

0 0
原创粉丝点击