[C++] Struktury, const i przeciążenia operatorów
Ostatnio zmodyfikowano 2015-02-21 16:53
Kopczak1995 Temat założony przez niniejszego użytkownika |
[C++] Struktury, const i przeciążenia operatorów » 2015-02-21 16:20:42 Witam. Spotkałem się z dziwnym zapisem i nie rozumiem co on ma znaczyć... Prosiłbym o wytłumaczenie :) struct student { char nazwisko[ 25 ]; double srednia; bool operator <( const student & x ) const { int porownaj = strcmp( nazwisko, x.nazwisko ); if( porownaj == 0 ) return srednia > x.srednia; return porownaj > 0 ? 0: 1; } };
Chodzi mi konkretnie o ten zapis przy przeciążeniu operatora. Ogólnie rozumiem ten mechanizm, jest to dla mnie dość proste i klarowne. Słówko const przed przyjmowaną strukturą student nie jest dla mnie zagadką, ma zapobiec przypadkowemu nadpisaniu danych, jednak nie rozumiem czym ma być zapis const { } tuż przed rozpoczęciem bloku danych. Błąd to nie jest, bo program bezstresowo się kompiluje, lecz co to zmienia i dlaczego ktoś tak to zapisał? |
|
pekfos |
» 2015-02-21 16:25:03 Po prostu ktoś zaimplementował metodę w ciele klasy. |
|
Monika90 |
» 2015-02-21 16:53:54 struct X { void f() { } void f() const { } };
Różnica między pierwszą funkcją f a drugą, polega na tym, że w ciele pierwszej wskaźnik this ma typ X*, a w drugiej const X*. To znaczy, piewsza funkcja może modyfikować stan obiektu klasy X na rzecz którego została wywołana, a druga nie może. |
|
« 1 » |