======9. přednáška======
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;