NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Přetěžování operátorů - pomoc

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ondřej
Člen
Avatar
Ondřej:13.1.2016 18:05

Zdravím,

na škole studuji programování a nepochopil jsem, jak přesně funguje a jak se používá přetěžování operátorů. Dostali jsme příklad a po definování a naplnění struktury nevím jak v něm dál pokračovat. Věřím že pro někoho kdo se tím zabývá je to otázka pár minut ale já bych potřeboval vysvětlit jak to funguje a nejlépe i ukázat na příkladu.

  • Vytvořte nový datový typ struktura reprezentující
  • datum s položkami – den, měsíc rok. Pro tuto strukturu
  • vytvořte přetížené operátory pro
  • - Porovnání (větší než i menší než) dvou dat.
  • - Inkrementace (zvětšení o jeden den) data
  • - Postinkrementace i preinkrementace
  • - Dekrementace data
  • - Rozdíl dvou dat
 
Odpovědět
13.1.2016 18:05
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na Ondřej
tomisoka:13.1.2016 18:43

Funguje to úplně stejně jako funkce, jen místo názvu funkce požiješ "operatorXX" (XX=přetěžovaný operátor) a nemůžeš to používat na pointery(což lze obejít pomocí "*pointer" ).

class Test{
public:
  Test(int data):data(data){}

  bool compare(Test& cmp){return data == cmp.data;}
  bool operator==(Test& cmp){return data == cmp.data;}

  int data;
};

int main(int argc, char *argv[]){

  Test test1(10);
  Test test2(10);
  Test test3(1);

  cout << test1.compare(test2) << endl;
  cout << (test1 == test2) << endl;

  cout << test1.compare(test3) << endl;
  cout << (test1 == test3) << endl;
  return 0;
}
 
Nahoru Odpovědět
13.1.2016 18:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.