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

  1. // ex07009.cpp
  2. // Contexts for 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. // ----- a class that expects a Julian date as an initializer
  23. class Tester {
  24.     Julian jd;
  25. public:
  26.     Tester(Julian j) { jd = j; }
  27.     void display() { jd.display(); }
  28. }; 
  29.  
  30. static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  31.  
  32. // ---- member conversion function (Julian <- Date)
  33. Date::operator Julian()
  34. {
  35.     Julian jd(0, yr);
  36.     for (int i = 0; i < mo-1; i++)
  37.         jd.da += dys[i];
  38.     jd.da += da;
  39.     return jd;
  40. }
  41.  
  42. // -------- a function that expects a Julian date
  43. void dispdate(Julian jd)
  44. {
  45.     jd.display();
  46. }
  47.  
  48. // --------- a function that returns a Julian Date
  49. Julian rtndate()
  50. {
  51.     Date dt(10,11,88);
  52.     return dt;            // this will be converted to Julian
  53. }
  54.  
  55. main()
  56. {
  57.     Date dt(11,17,89);
  58.     Julian jd;
  59.     // ------- convert Date to Julian via assignment
  60.     jd = dt;
  61.     jd.display();
  62.     // ------- convert Date to Julian via function argument
  63.     dispdate(dt);
  64.     // ------- convert Date to Julian via initializer
  65.     Tester ts(dt);
  66.     ts.display();
  67.     // ------- convert Date to Julian via return value
  68.     jd = rtndate();
  69.     jd.display();
  70. }
  71.