/**
* 书本:【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可以封装在一个类中
最新推荐文章于 2018-10-24 20:52:05 发布