/** * 书本:【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; }
时间: 2024-11-08 16:30:23