51
public:
complex(double r, double i) { re=r; im=i; }
friend complex operator+( complex , complex);
friend complex operator+( complex ,double);
friend complex operator+( double, complex);
};
inline complex operator+(complex a, complex b) // complex+complex
{complex c; c.re=a.re+b.re; c.im=a.im+b.im; return c;}
inline complex operator+(complex a, double x) //complex+double
{ complex c; c.re=a.re+x; c.im=im; return c;}
inline complex operator+(double x, complex a) // double + complex
{complex c; c.re=a.re+x; c.im=im; return c;}
Funksiya – amalni chaqirish:
complex c = a + b; //qisqa yozuv
complex d = operator+(a,b); //oshkora chaqirish
Unar amallarni qo’shimcha yuklash
Ixtiyoriy
unar amali ikkita usulda tavsiflanish mumkin: yoki parametrsizli
funksiya komponentasi sifatida, yoki bitta parametrli global (do’stona bo’lishi
mumkin) funksiya sifatida. Birinchi xolatda
Z ifoda Z.operator
(), ikkinchi
xolatda esa operator
(Z) chaqirilishini bildiradi.
Aniq sinf doirasida qayta yuklangan unar operatsiyalar faqat parametrsizli
nostatik komponentli funksiya orqali qayta yuklanadi. Sinfdagi chaqiriladigan obyekt
avtomatik ravishda operand sifatida qabul qilinadi.
Sinf doirasidan tashqarida qayta yuklangan unar operatsiyalar (global funksiya
kabi) sinf tipdagi bitta parametrga ega bo’lishi lozim. Shu parametr orqali
uzatiladigan obyekt operand sifatida qabul qilinadi.
Sintaksis:
a) birinchi xolda (sinf doirasida tavsiflash):