home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ANSICPP.ZIP / EX07008.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  972 b   |  48 lines

  1. // ex07008.cpp
  2. // Invoking conversions
  3. #include <iostream.h>
  4.  
  5. // -------- Julian date class
  6. class Julian {
  7. public:
  8.     int da, yr;
  9.     Julian() {}
  10.     Julian(int d, int y) { da = d; yr = y;}
  11.     void display(){cout << '\n' << yr << '-' << da;}
  12. };
  13.  
  14. // ------- date class
  15. class Date {
  16.     int mo, da, yr;
  17. public:
  18.     Date(int m, int d, int y) { mo = m; da = d; yr = y; }
  19.     operator Julian(); // conversion function
  20. };
  21.  
  22. static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  23.  
  24. // ---- member conversion function (Julian <- Date)
  25. Date::operator Julian()
  26. {
  27.     Julian jd(0, yr);
  28.     for (int i = 0; i < mo-1; i++)
  29.         jd.da += dys[i];
  30.     jd.da += da;
  31.     return jd;
  32. }
  33.  
  34. main()
  35. {
  36.     Date dt(11,17,89);
  37.     Julian jd;
  38.     // ------- convert Date to Julian via implicit conversion
  39.     jd = dt;
  40.     jd.display();
  41.     // ------- convert Date to Julian via cast
  42.     jd = (Julian) dt;
  43.     jd.display();
  44.     // ------- convert Date to Julian via reverse cast
  45.     jd = Julian(dt);
  46.     jd.display();
  47. }
  48.