Warning
This page is located in archive.

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;

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