Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Struktury, const i przeciążenia operatorów

Ostatnio zmodyfikowano 2015-02-21 16:53
Autor Wiadomość
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 :)
C/C++
struct student {
    char nazwisko[ 25 ];
    double srednia;
    bool operator <( const student & x ) const
    {
        int porownaj = strcmp( nazwisko, x.nazwisko );
       
        if( porownaj == 0 ) //gdy nazwiska są równe sortujemy według srednich
             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 { /* operacje przeciążenia */ }
 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ł?
P-126974
pekfos
» 2015-02-21 16:25:03
Po prostu ktoś zaimplementował metodę w ciele klasy.
P-126975
Monika90
» 2015-02-21 16:53:54
C/C++
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.

P-126984
« 1 »
  Strona 1 z 1