Search
Většinu unárních operátorů lze přetížit jako statické i nestatické metody bez parametru (jediným “parametrem” je volající instance) nebo jako funkce s jedním parametrem. V ukázce jsou přetěžovány jako nestatické metody. Jediný problém nastává u operátorů inktrementace - je třeba od sebe odlišit preinkrement a postinkrement. Víme, že při výběru, která funkce se má zavolat v případě, že více funkcí nese stejný název, je rozhodují počet a typ parametrů. V tomto případě se tedy obě metody odliší počtem parametrů - postinkrement má jeden parametr typu int, který se nikde nepoužívá, ale je důležitý pro odlišení obou metod. Funkce přetížených operátorů odpovídá jejich označení.
Přetížení operátorů:
zlomek zlomek::operator-() { return zlomek(-citatel, jmenovatel); } zlomek zlomek::operator++() { cout << "preinkrement" << endl; citatel+=jmenovatel; return *this; } zlomek zlomek::operator++(int a) { zlomek p= *this; cout << "postinkrement" << endl; citatel+=jmenovatel; return p; }
Volání přetížených operátorů:
zlomek a(2,5), b(3,4), c(2,3), d(4,6); a=-a; a.vypis(); a++; a.vypis(); ++d; a.vypis(); return 0;