【ThinkingInC++】37、更安全的union可以封装在一个类中
2014-09-06 14:52
399 查看
/** * 书本:【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可以封装在一个类中
- 【ThinkingInC++】46、特定的数据成员可以在一个const对象里被改变
- 【ThinkingInC++】43、内建类型封装在一个类里
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- Thinking in C++: C++中关于union、struct、class的区别
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- 一个封装好的C++比特数组BitArray,可以对位进行直接操作
- 【ThinkingInC++】32、一个句柄类
- 一个Windows C++的线程类实现(封装API,形成一个类,但不完善。其实可以学习一下Delphi的TThread的写法)
- 【ThinkingInC++】24、基本对象,用struct写一个类
- 【ThinkingInC++】25、用sizeof运算符可以确定struct的长度。
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- 【ThinkingInC++】23、一个袖珍的C库
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- thinking in c++ 读书笔记---友元函数的一个问题
- Thinking in C++ learning(1)-----C in C++
- Thinking in C++读书笔记--5.3缺省参数
- Thinking in C++(1)
- Thinking in C++ 下载