home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / tybc4 / class6.cpp < prev    next >
C/C++ Source or Header  |  1993-04-02  |  1KB  |  81 lines

  1. // Program demonstrates operators and friend operators
  2.  
  3. #include <iostream.h>
  4.  
  5. class Complex
  6. {
  7.    protected:
  8.      double x;
  9.      double y;
  10.  
  11.    public:
  12.      Complex(double real = 0, double imag = 0)
  13.        { assign(real, imag); }
  14.      Complex(Complex& c);
  15.      void assign(double real = 0, double imag = 0);
  16.      double getReal() const { return x; }
  17.      double getImag() const { return y; }
  18.      Complex& operator =(Complex& c);
  19.      Complex& operator +=(Complex& c);
  20.      friend Complex operator +(Complex& c1, Complex& c2);
  21.      friend ostream& operator <<(ostream& os, Complex& c);
  22. };
  23.  
  24. Complex::Complex(Complex& c)
  25. {
  26.   x = c.x;
  27.   y = c.y;
  28. }
  29.  
  30. void Complex::assign(double real, double imag)
  31. {
  32.   x = real;
  33.   y = imag;
  34. }
  35.  
  36. Complex& Complex::operator =(Complex& c)
  37. {
  38.   x = c.x;
  39.   y = c.y;
  40.   return *this;
  41. }
  42.  
  43. Complex& Complex::operator +=(Complex& c)
  44. {
  45.   x += c.x;
  46.   y += c.y;
  47.   return *this;
  48. }
  49.  
  50. Complex operator +(Complex& c1, Complex& c2)
  51. {
  52.   Complex result(c1);
  53.  
  54.   result.x += c2.x;
  55.   result.y += c2.y;
  56.   return result;
  57. }
  58.  
  59. ostream& operator <<(ostream& os, Complex& c)
  60. {
  61.   os << "(" << c.x << " + i" << c.y << ")";
  62.   return os;
  63. }
  64.  
  65. main()
  66. {
  67.  
  68.   Complex c1(3, 5);
  69.   Complex c2(7, 5);
  70.   Complex c3;
  71.   Complex c4(2, 3);
  72.  
  73.   c3 = c1 + c2;
  74.   cout << c1 << " + " << c2 << " = " << c3 << "\n";
  75.   cout << c3 << " + " << c4 << " = ";
  76.   c3 += c4;
  77.   cout << c3 << "\n";
  78.   return 0;
  79. }
  80.  
  81.