Warning
This page is located in archive.

9. přednáška

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ě.

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;

courses/a7b36pjc/lectures/09/specialni_c.txt · Last modified: 2015/01/16 21:04 (external edit)