Основы языка программирования C++ с применением объектно-ориентированного программирования. Чернышов М.К. - 55 стр.

UptoLike

Составители: 

friend TPoint operator + (const TPoint& one,
const TPoint& two);
friend int operator == (const TPoint& one,
const TPoint& two);
friend int operator != (const TPoint& one,
const TPoint& two);
};
ɉɨɥɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɷɬɢɯ ɨɩɟɪɚɰɢɣ ɞɥɹ ɨɛɴɟɤɬɨɜ ɤɥɚɫɫɚ
TPoint ɢɦɟɟɬ ɜɢɞ
inline TPoint& TPoint::operator += (const TPoint& adder)
{
x+=adder.x; y+=adder.y; return *this;
}
inline TPoint& TPoint::operator -= (const TPoint& subber)
{
x-=subber.x; y-=subber.y; return *this;
}
Ɉɫɬɚɥɶɧɵɟ ɨɩɟɪɚɰɢɢ ɨɩɪɟɞɟɥɹɸɬɫɹ ɚɧɚɥɨɝɢɱɧɵɦ ɨɛɪɚɡɨɦ.
ɉɭɫɬɶ ɜ ɩɪɨɝɪɚɦɦɟ ɢɦɟɸɬɫɹ ɨɛɴɹɜɥɟɧɢɹ:
TPoint x(12,3), y(21,30), z(18,30);
Ɍɨɝɞɚ ɦɨɠɧɨ ɡɚɩɢɫɚɬɶ
x+=y; y-=z; TPoint r=x+z:
Ɉɛɳɢɟ ɩɪɚɜɢɥɚ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɹ ɨɩɟɪɚɰɢɣ ɫɜɨɞɹɬɫɹ ɤ ɫɥɟɞɭɸɳɟɦɭ:
x Ⱦɜɭɦɟɫɬɧɵɟ ɨɩɟɪɚɰɢɢ ɞɨɥɠɧɵ ɢɦɟɬɶ ɞɜɚ ɩɚɪɚɦɟɬɪɚ, ɨɞɧɨɦɟɫɬɧɵɟ
ɨɞɢɧ ɩɚɪɚɦɟɬɪ, ɩɪɢɱɟɦ ɟɫɥɢ ɨɩɟɪɚɰɢɹ ɨɛɴɹɜɥɟɧɚ ɤɚɤ ɤɨɦɩɨɧɟɧɬɚ
ɤɥɚɫɫɚ, ɬɨ ɧɟɹɜɧɵɦ ɩɟɪɜɵɦ ɨɩɟɪɚɧɞɨɦ ɹɜɥɹɟɬɫɹ ɷɤɡɟɦɩɥɹɪ ɨɛɴɟɤɬɚ
(ɫɥɟɞɨɜɚɬɟɥɶɧɨ, ɩɪɢ ɨɩɪɟɞɟɥɟɧɢɢ ɞɜɭɦɟɫɬɧɨɣ ɨɩɟɪɚɰɢɢ ɛɭɞɟɬ ɡɚɞɚ-
ɜɚɬɶɫɹ ɨɞɢɧ ɩɚɪɚɦɟɬɪ, ɨɞɧɨɦɟɫɬɧɚɹ ɨɩɟɪɚɰɢɹ ɨɛɴɹɜɥɹɟɬɫɹ ɫ ɩɭɫɬɵɦ
ɫɩɢɫɤɨɦ ɩɚɪɚɦɟɬɪɨɜ). ȿɫɥɢ ɨɩɟɪɚɰɢɹ ɩɟɪɟɨɩɪɟɞɟɥɹɟɬɫɹ ɜɧɟ ɤɥɚɫɫɚ (ɫ
ɨɩɢɫɚɬɟɥɟɦ
friend), ɬɨ ɞɥɹ ɞɜɭɦɟɫɬɧɨɣ ɨɩɟɪɚɰɢɢ ɞɨɥɠɧɵ ɛɵɬɶ ɡɚ-
ɞɚɧɵ ɞɜɚ ɩɚɪɚɦɟɬɪɚ, ɞɥɹ ɨɞɧɨɦɟɫɬɧɨɣ ɨɩɟɪɚɰɢɢɨɞɢɧ ɩɚɪɚɦɟɬɪ.
x ɉɪɢ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɢ ɫɨɯɪɚɧɹɟɬɫɹ ɩɪɢɨɪɢɬɟɬ ɢɫɯɨɞɧɨɣ ɨɩɟɪɚɰɢɢ, ɬɨ
ɟɫɬɶ ɨɩɟɪɚɰɢɹ
«+» ɛɭɞɟɬ ɜɵɩɨɥɧɹɬɶɫɹ ɪɚɧɶɲɟ ɨɩɟɪɚɰɢɢ «=» ɢɬɚɤɞɚ-
ɥɟɟ.
x ɉɪɢ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɢ ɧɟ ɧɚɫɥɟɞɭɸɬɫɹ ɫɜɨɣɫɬɜɚ ɤɨɦɦɭɬɚɬɢɜɧɨɫɬɢ ɢ
ɚɫɫɨɰɢɚɬɢɜɧɨɫɬɢ, ɬɨ ɟɫɬɶ ɪɟɡɭɥɶɬɚɬ ɜɵɪɚɠɟɧɢɹ
ɯ+y-z ɦɨɠɟɬ ɨɬɥɢ-
ɱɚɬɶɫɹ ɨɬ ɪɟɡɭɥɶɬɚɬɚ ɜɵɪɚɠɟɧɢɹ
y-z+x ɢ ɡɚɜɢɫɢɬ ɨɬ ɬɨɝɨ, ɤɚɤ ɨɩɪɟɞɟ-
ɥɟɧɵ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɟ ɨɩɟɪɚɰɢɢ.
x ɇɟ ɞɨɩɭɫɤɚɟɬɫɹ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɟ ɨɩɟɪɚɰɢɣ
«.» (ɬɨɱɤɚ), «.*» (ɨɛɪɚ-
ɳɟɧɢɟ ɤ ɭɤɚɡɚɬɟɥɸ ɧɚ ɤɨɦɩɨɧɟɧɬɭ ɤɥɚɫɫɚ ɢɥɢ ɫɬɪɭɤɬɭɪɵ),
«::» (ɪɚɡ-
ɪɟɲɟɧɢɟ ɤɨɧɬɟɤɫɬɚ), ɚ ɬɚɤɠɟ ɨɩɟɪɚɰɢɣ
«#» ɢ «##», ɢɫɩɨɥɶɡɭɟɦɵɯ
ɩɪɢ ɩɪɟɩɪɨɰɟɫɫɨɪɧɨɣ ɨɛɪɚɛɨɬɤɟ.
x ɉɟɪɟɨɩɪɟɞɟɥɹɟɦɵɟ ɨɩɟɪɚɰɢɢ
«=» (ɩɪɢɫɜɚɢɜɚɧɢɟ), «()» (ɮɭɧɤɰɢɹ),
«[]» (ɢɧɞɟɤɫ), «->» (ɨɛɪɚɳɟɧɢɟ ɤ ɤɨɦɩɨɧɟɧɬɟ ɤɥɚɫɫɚ ɩɨ ɭɤɚɡɚɬɟɥɸ)
ɜɫɟɝɞɚ ɞɨɥɠɧɵ ɛɵɬɶ ɤɨɦɩɨɧɟɧɬɚɦɢ ɤɥɚɫɫɚ ɢ ɧɟ ɦɨɝɭɬ ɛɵɬɶ
static.
55
         friend TPoint operator + (const TPoint& one,
                                      const TPoint& two);
         friend int operator == (const TPoint& one,
                                    const TPoint& two);
         friend int operator != (const TPoint& one,
                                    const TPoint& two);
        };
ɉɨɥɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɷɬɢɯ ɨɩɟɪɚɰɢɣ ɞɥɹ ɨɛɴɟɤɬɨɜ ɤɥɚɫɫɚ TPoint ɢɦɟɟɬ ɜɢɞ
     inline TPoint& TPoint::operator += (const TPoint& adder)
        {
        x+=adder.x; y+=adder.y; return *this;
        }
     inline TPoint& TPoint::operator -= (const TPoint& subber)
        {
        x-=subber.x; y-=subber.y; return *this;
        }
Ɉɫɬɚɥɶɧɵɟ ɨɩɟɪɚɰɢɢ ɨɩɪɟɞɟɥɹɸɬɫɹ ɚɧɚɥɨɝɢɱɧɵɦ ɨɛɪɚɡɨɦ.
    ɉɭɫɬɶ ɜ ɩɪɨɝɪɚɦɦɟ ɢɦɟɸɬɫɹ ɨɛɴɹɜɥɟɧɢɹ:

     TPoint x(12,3), y(21,30), z(18,30);
Ɍɨɝɞɚ ɦɨɠɧɨ ɡɚɩɢɫɚɬɶ
     x+=y; y-=z; TPoint r=x+z:
   Ɉɛɳɢɟ ɩɪɚɜɢɥɚ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɹ ɨɩɟɪɚɰɢɣ ɫɜɨɞɹɬɫɹ ɤ ɫɥɟɞɭɸɳɟɦɭ:
  x Ⱦɜɭɦɟɫɬɧɵɟ ɨɩɟɪɚɰɢɢ ɞɨɥɠɧɵ ɢɦɟɬɶ ɞɜɚ ɩɚɪɚɦɟɬɪɚ, ɨɞɧɨɦɟɫɬɧɵɟ –
    ɨɞɢɧ ɩɚɪɚɦɟɬɪ, ɩɪɢɱɟɦ ɟɫɥɢ ɨɩɟɪɚɰɢɹ ɨɛɴɹɜɥɟɧɚ ɤɚɤ ɤɨɦɩɨɧɟɧɬɚ
    ɤɥɚɫɫɚ, ɬɨ ɧɟɹɜɧɵɦ ɩɟɪɜɵɦ ɨɩɟɪɚɧɞɨɦ ɹɜɥɹɟɬɫɹ ɷɤɡɟɦɩɥɹɪ ɨɛɴɟɤɬɚ
    (ɫɥɟɞɨɜɚɬɟɥɶɧɨ, ɩɪɢ ɨɩɪɟɞɟɥɟɧɢɢ ɞɜɭɦɟɫɬɧɨɣ ɨɩɟɪɚɰɢɢ ɛɭɞɟɬ ɡɚɞɚ-
    ɜɚɬɶɫɹ ɨɞɢɧ ɩɚɪɚɦɟɬɪ, ɨɞɧɨɦɟɫɬɧɚɹ ɨɩɟɪɚɰɢɹ ɨɛɴɹɜɥɹɟɬɫɹ ɫ ɩɭɫɬɵɦ
    ɫɩɢɫɤɨɦ ɩɚɪɚɦɟɬɪɨɜ). ȿɫɥɢ ɨɩɟɪɚɰɢɹ ɩɟɪɟɨɩɪɟɞɟɥɹɟɬɫɹ ɜɧɟ ɤɥɚɫɫɚ (ɫ
    ɨɩɢɫɚɬɟɥɟɦ friend), ɬɨ ɞɥɹ ɞɜɭɦɟɫɬɧɨɣ ɨɩɟɪɚɰɢɢ ɞɨɥɠɧɵ ɛɵɬɶ ɡɚ-
    ɞɚɧɵ ɞɜɚ ɩɚɪɚɦɟɬɪɚ, ɞɥɹ ɨɞɧɨɦɟɫɬɧɨɣ ɨɩɟɪɚɰɢɢ – ɨɞɢɧ ɩɚɪɚɦɟɬɪ.
  x ɉɪɢ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɢ ɫɨɯɪɚɧɹɟɬɫɹ ɩɪɢɨɪɢɬɟɬ ɢɫɯɨɞɧɨɣ ɨɩɟɪɚɰɢɢ, ɬɨ
    ɟɫɬɶ ɨɩɟɪɚɰɢɹ «+» ɛɭɞɟɬ ɜɵɩɨɥɧɹɬɶɫɹ ɪɚɧɶɲɟ ɨɩɟɪɚɰɢɢ «=» ɢ ɬɚɤ ɞɚ-
    ɥɟɟ.
  x ɉɪɢ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɢ ɧɟ ɧɚɫɥɟɞɭɸɬɫɹ ɫɜɨɣɫɬɜɚ ɤɨɦɦɭɬɚɬɢɜɧɨɫɬɢ ɢ
    ɚɫɫɨɰɢɚɬɢɜɧɨɫɬɢ, ɬɨ ɟɫɬɶ ɪɟɡɭɥɶɬɚɬ ɜɵɪɚɠɟɧɢɹ ɯ+y-z ɦɨɠɟɬ ɨɬɥɢ-
    ɱɚɬɶɫɹ ɨɬ ɪɟɡɭɥɶɬɚɬɚ ɜɵɪɚɠɟɧɢɹ y-z+x ɢ ɡɚɜɢɫɢɬ ɨɬ ɬɨɝɨ, ɤɚɤ ɨɩɪɟɞɟ-
    ɥɟɧɵ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɟ ɨɩɟɪɚɰɢɢ.
  x ɇɟ ɞɨɩɭɫɤɚɟɬɫɹ ɩɟɪɟɨɩɪɟɞɟɥɟɧɢɟ ɨɩɟɪɚɰɢɣ «.» (ɬɨɱɤɚ), «.*» (ɨɛɪɚ-
    ɳɟɧɢɟ ɤ ɭɤɚɡɚɬɟɥɸ ɧɚ ɤɨɦɩɨɧɟɧɬɭ ɤɥɚɫɫɚ ɢɥɢ ɫɬɪɭɤɬɭɪɵ), «::» (ɪɚɡ-
    ɪɟɲɟɧɢɟ ɤɨɧɬɟɤɫɬɚ), ɚ ɬɚɤɠɟ ɨɩɟɪɚɰɢɣ «#» ɢ «##», ɢɫɩɨɥɶɡɭɟɦɵɯ
    ɩɪɢ ɩɪɟɩɪɨɰɟɫɫɨɪɧɨɣ ɨɛɪɚɛɨɬɤɟ.
  x ɉɟɪɟɨɩɪɟɞɟɥɹɟɦɵɟ ɨɩɟɪɚɰɢɢ «=» (ɩɪɢɫɜɚɢɜɚɧɢɟ), «()» (ɮɭɧɤɰɢɹ),
    «[]» (ɢɧɞɟɤɫ), «->» (ɨɛɪɚɳɟɧɢɟ ɤ ɤɨɦɩɨɧɟɧɬɟ ɤɥɚɫɫɚ ɩɨ ɭɤɚɡɚɬɟɥɸ)
    ɜɫɟɝɞɚ ɞɨɥɠɧɵ ɛɵɬɶ ɤɨɦɩɨɧɟɧɬɚɦɢ ɤɥɚɫɫɚ ɢ ɧɟ ɦɨɝɭɬ ɛɵɬɶ static.
                                  55