Toto je moja trieda "complex" ktorá ma 2 premenné : 'r' a 'i'
r = realna zlozka cisla i = imaginarna
class complex{
private:
int r;
int i;
public:
complex(int re = 0, int im = 0); //KONŠTRUKTOR
complex & operator+(const complex &)const;
//PREŤAŽENIE OPERÁTORU + aby som mohol sčítat 2objekty typu complex
friend ostream & operator<<(ostream & os, complex & c);
//PREŤAŽENIE OPERÁTORU << ABY SA DAL POUŽIŤ Z COUT napr. cout<<(objet typu complex)
};
definície :
complex & operator+(const complex & c)const
{
complex temp(r+c.r, i+c.i); //vytvorím objekt typu complex a priradím mu sčítané hodnoty
cout << temp; //vypíšem len aby som mal istotu že funguje správne
system("PAUSE");
return temp; //returnem objekt
}
ostream & operator<<(ostream & os, complex & c)
{
os << "(" << c.r << "," << c.i << "i)"; //zobrazím
return os; // returnem objekt triedy ostream aby sa dal cout použiť z viacerimy pr.
}
int main()
{
complex cislo1(10,20); //objekt complex r = 10, i = 20
complex cislo2(20,50); //objekt complex r = 20, i = 50
cout << cislo1 << endl << cislo2 << endl; // zobrazí sa (10,20i)
(20,50i) čo je správne.
cout << cislo1+cislo2;
//teraz ide operátor+ takže sa vytvorý novy objekt zobrazí sucet :"(30,70i)" a return-e
// takže sa to zmeni na : cout << return-nený objekt
//operator<< zobrazí hodnoty ale nie správnu hodnotu "(30,70i)" ale :"(10,75)"
rád by som vedel prečo? ...ani na googli som nič nenašiel.