码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-09-06 16:11:35      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:联合体

/**
* 书本:【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;
}


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

标签:联合体

原文地址:http://blog.csdn.net/cutter_point/article/details/39100915

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!