Przeciążanie operatorów - niezrozumiały kod
Ostatnio zmodyfikowano 2012-05-06 21:16
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:
CDate & operator ++() { AddDays( 1 ); return * this; }
Proszę o wyjaśnienie mi pierwszej linijki oraz return *this. |
|
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). |
|
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? |
|
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: 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 :)
|
|
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;) |
|
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 |
|
CodeMeister Temat założony przez niniejszego użytkownika |
» 2012-05-06 21:16:04 Dobra, dzięki wszystkim. |
|
« 1 » |