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

  1. // ex07015.cpp
  2. // Friend functions in a class
  3. #include <iostream.h>
  4.  
  5. class Julian;
  6. // ------- date class
  7. class Date {
  8.     int mo, da, yr;
  9. public:
  10.     Date() {}
  11.     Date(Julian);        // constructor conversion function
  12.     void display()
  13.         {cout << '\n' << mo << '/' << da << '/' << yr;}
  14. };
  15. // -------- Julian date class
  16. class Julian {
  17.     int da, yr;
  18. public:
  19.     Julian(int d, int y) { da = d; yr = y; }
  20.     friend Date::Date(Julian); // friend conversion function
  21. };
  22. static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  23. // ---- constructor conversion function (Date <- Julian)
  24. Date::Date(Julian jd)
  25. {
  26.     yr = jd.yr;
  27.     da = jd.da;
  28.     for (mo = 0; mo < 11; mo++)
  29.         if (da > dys[mo])
  30.             da -= dys[mo];
  31.         else
  32.             break;
  33.     mo++;
  34. }
  35. main()
  36. {
  37.     Date dt;
  38.     Julian jd(123, 89);
  39.     dt = jd;        // convert Julian to Date
  40.     dt.display();
  41. }
  42.