home *** CD-ROM | disk | FTP | other *** search
- //: C07:SuperVar.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // A super-variable
- #include <iostream>
- using namespace std;
-
- class SuperVar {
- enum {
- character,
- integer,
- floating_point
- } vartype; // Define one
- union { // Anonymous union
- char c;
- int i;
- float f;
- };
- public:
- SuperVar(char ch);
- SuperVar(int ii);
- SuperVar(float ff);
- void print();
- };
-
- SuperVar:: SuperVar(char ch) {
- vartype = character;
- c = ch;
- }
-
- SuperVar:: SuperVar(int ii) {
- vartype = integer;
- i = ii;
- }
-
- SuperVar:: SuperVar(float ff) {
- vartype = floating_point;
- f = ff;
- }
-
- 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();
- } ///:~
-