UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 8. Gyakorlat Operator overloading II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS friend függvények Lehetőség van olyan osztályon kívüli függvények írására, melyek hozzáférnek az adott osztály private adattagjaihoz, sőt megtehető az is, hogy egy osztály függvénye hozzáfér egy másik osztály private adattagjaihoz. Ezt úgy tehetjük meg, hogy felvesszük a függvény fejlécét az adott osztályba, a függvény fejléc elé pedig odatesszük a friend kulcsszót.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS friend függvények & operator overloading Az operátor overloading techikánál is már használhatóak a friend függvények. Eddig megtehettük ezt: Obj a; a + 2; De a (2 + a) már nem tehetjük meg, mert szintaxis szerint a bal oldalon kell állnia az objektumnak. De azt megtehetjük, hogy a global scope-ba írunk egy 2 paraméteres operátor overloadingot megfelelő paraméter sorrenddel és ezt felvesszük friend függvényként az osztályba.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS [ ] operátor Szintaxis: Visszatérési_Tipus operator[] ( int i ); Segítségével az objektumunkat úgy tudjuk kezelni, mint, ha az egy tömb lenne. Akkor van értelme a használatának, ha az osztály rendelkezik valamilyen adatszerkezettel (tömb, vektor,stb) és annak az elemeivel térünk vissza.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS ( ) operátor Szintaxis: Visszatérési_Tipus operator()( paraméterek ); Paraméterszámára nincs korlát. Segítségével az objektumot lehet úgy „kezelni mint egy függvényt.”
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS ++ operátor Megkülönböztetünk prefix és postfix operátort ezek között. Prefix szintaxis: Visszatérési_Tipus operator++(); Postfix szintaxis: Visszatérési_Tipus operator++( int ); A postfix operátornál az int paramétert nem kell használni, csak jelzés a fordítónak, hogy ez egy postfix operátor. (Általában) a különbség post- és prefix operátor között, hogy postfixnél a változatlan objektummal kell visszatérni növelés után, míg prefixnél megváltoztatjuk az objektumot és utána térünk vissza vele.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS -- operátor Mint a ++ operátor…
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS = operátor Működése megegyezik a copy konstruktorral. Szintaxis: Visszatérési_Tipus operator=( Adott_Osztály& );
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS << operátor Lehetőség van az objektumokat „bekötni” a kiíró bájtsorba. Pl: Tort a( 2,3 ); cout << a << endl; Ezeket az operátor overloading-okat a global scope-ba érdemes csinálni és utána friendként felvenni az osztályba, mivel 2 paraméterrel rendelkeznek: ostream referencia, kiírandó osztály referencia. Függvény fejléc szintaxis: friend ostream& operator<<( ostream&, Adott_Osztály& );
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS >> operátor Hasonló a << operátorhoz, itt azonban a beolvasó bájtsorhoz köthetjük az objektumunkat