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

Przeciążanie operatorów - niezrozumiały kod

Ostatnio zmodyfikowano 2012-05-06 21:16
Autor Wiadomość
CodeMeister
Temat założony przez niniejszego użytkownika
Przeciążanie operatorów - niezrozumiały kod
» 2012-05-06 19:14:46
Witam,
Uczę się C++ i w rozdziale o operatorach natknąłem się na niezrozumiały dla mnie kod:
C/C++
CDate & operator ++()
{
    AddDays( 1 );
    return * this;
}

Proszę o wyjaśnienie mi pierwszej linijki oraz return *this.
P-56153
pekfos
» 2012-05-06 19:21:10
Gdzie w kursie masz coś takiego?

//edit: A to jest definicja operatora preinkrementacji zwracającego (jak powinien) obiekt dla którego został wywołany. Zapewne należy do klasy CDate (wyrwałeś to z kontekstu).
P-56155
CodeMeister
Temat założony przez niniejszego użytkownika
» 2012-05-06 19:57:07
Nie z tego kursu tylko książki...
Wiem do czego on służy tylko nie wiem jak to stosować.

// Klasa te przechowuje dzień, miesiąc i rok
a jeszcze o co chodzi z: m_nMonth %= 12;
wydaje mi się, że jaśli m_nMonth jest większy od 12 to ma wartość 1, czy mi się zdaje?
P-56163
DejaVu
» 2012-05-06 20:13:26
Słowo kluczowe
this
 wewnątrz klasy zwraca wskaźnik na obiekt na którym pracuje (w dużym uproszczeniu: taki wskaźnik na samego siebie). Symbol gwiazdki pełni taką samą rolę jak przy każdym innym wskaźniku. Pierwsza linijka to sposób na przeciążanie operaratora inkrementacji (jest to chyba operator preinkrementacji). Składnia do przeciążania operatorów w klasach jest z góry określona i zawsze się ją zapisuje tak samo (zmieniając co najwyżej odpowiednie typy).

Sposoby przeciążeń konkretnych operatorów masz zaprezentowane tu: » standard C++Przeciążanie operatorów. Nie ma tam wszystkich możliwych przykładów bo na opis każdego trzeba poświęcić czas, a czasu jak na razie brak :)

P-56165
CodeMeister
Temat założony przez niniejszego użytkownika
» 2012-05-06 20:19:32
a ten '&' w pierwszej linijce? w implementacji inkrementacji przyrostkowej go nie ma i jest int w nawiasie... (to jest preinkrementacja;)
P-56168
Admixior
» 2012-05-06 20:29:34
To '&' w pierwszej linijce oznacza że nie chcesz zwrócić kopie nietrwałą obiektu tylko jego referencję.
Int oznacza że chcesz żeby to było przyrostkowe
P-56171
CodeMeister
Temat założony przez niniejszego użytkownika
» 2012-05-06 21:16:04
Dobra, dzięki wszystkim.
P-56180
« 1 »
  Strona 1 z 1