Search
Kromě klasických operátorů lze přetížit i operátory [], () a přetypování. Tyto operátory lze přetěžovat pouze jako nestatické metody. V tomto případě operátor [] vrací čitatele (je-li zadaný index lichý) nebo jmenovatele (je-li zadaný index sudý), operátor () vypíše zlomek a operátor přetypování je demonstrován na přetypování na typ double. Zlomek vrací svou hodnotu v podobě desetinného čísla. Při výpisu zlomku překladač zjistí, že operátor « není přetížen pro typ zlomek a snaží se tedy zlomek přetypovat na libovolný typ, který umí vypsat. A tím je double. Operátor přetypování je tedy volán implicitně.
[]
()
double
«
Přetížení operátorů:
void zlomek::operator()() { cout << citatel << "/" << jmenovatel << endl; } int zlomek::operator[](int i) { if (i%2==1) return citatel; else return jmenovatel; } zlomek::operator double() { return citatel / (double) jmenovatel; }
Volání přetížených operátorů:
zlomek a(2,5), b(3,4), c(2,3), d(4,6), e(1,2); a(); cout << a[1] << endl; cout << a << endl; return 0;