Operator jako funkcja zaprzyjaźniona:

-deklarowany w ciele klasy

-definiowany poza klasą

-składnia:

w ciele klasy

friend typZwrac operator@

(argumenty);

gdzieś w pliku definicja

typZwrac operator@(argumenty)

{

instrukcje;

}

użycie operatora:

obiektC = obiektA @ obiektB

wskazania:

-gdy nie da się zastosować żadnego z powyższych sposobów,

-gdy obiekty są różnych klas i potrzebny jest dostęp do składowych prywatnych.

class CWektor

{

private:

double mX,mY;

friend CWektor operator*(int n, CWektor W);

...

}

CWektor operator*(int n, CWektor w)

//obiekty różnych klas

{

CWektor z;

z.mX = n *q.mX;

z.mY = n *q.mY;

return z;

}

w main ()

...

CWektor w5(0,0);

w5.WYpisz();

w5=5*w1;

w5.Wypisz();

Przeciążenie operatora <<

friend ostream & operator<<(ostream &cout, CWektor a);

ostream & operator<< (ostream &cout, CWektor a)

{

a.ObliczDlugosc();

cout << "x="<<a.mX<< " y="<<a.mY <<" d=" << a.mD << endl;

}

w funkcji main

cout <<w1<<w2;