home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C07 / SuperVar.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  1.1 KB  |  63 lines

  1. //: C07:SuperVar.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // A super-variable
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. class SuperVar {
  11.   enum {
  12.     character,
  13.     integer,
  14.     floating_point
  15.   } vartype;  // Define one
  16.   union {  // Anonymous union
  17.     char c;
  18.     int i;
  19.     float f;
  20.   };
  21. public:
  22.   SuperVar(char ch);
  23.   SuperVar(int ii);
  24.   SuperVar(float ff);
  25.   void print();
  26. };
  27.  
  28. SuperVar:: SuperVar(char ch) {
  29.   vartype = character;
  30.   c = ch;
  31. }
  32.  
  33. SuperVar:: SuperVar(int ii) {
  34.   vartype = integer;
  35.   i = ii;
  36. }
  37.  
  38. SuperVar:: SuperVar(float ff) {
  39.   vartype = floating_point;
  40.   f = ff;
  41. }
  42.  
  43. void SuperVar::print() {
  44.   switch (vartype) {
  45.     case character:
  46.       cout << "character: " << c << endl;
  47.       break;
  48.     case integer:
  49.       cout << "integer: " << i << endl;
  50.       break;
  51.     case floating_point:
  52.       cout << "float: " << f << endl;
  53.       break;
  54.   }
  55. }
  56.  
  57. int main() {
  58.   SuperVar A('c'), B(12), C(1.44F);
  59.   A.print();
  60.   B.print();
  61.   C.print();
  62. } ///:~
  63.