Przeciążenia operatorów, const
Ostatnio zmodyfikowano 2013-09-29 22:20
mbooge Temat założony przez niniejszego użytkownika |
Przeciążenia operatorów, const » 2013-09-29 19:53:04 Witam Mam pytanie odnośnie przykładu z lekcji 8 ( Operatory). Postanowiłem skopiować program i usunąć z niego wszystkie consty. Czy mógłby mi ktoś wytłumaczyć czemu program nie chce się skompilować? Nie rozumiem czemu wyskakuje error typu 'no matching function' i chciałbym zrozumieć czemu ten const jest tak bardzo potrzebny, co on tu takiego włąściwie robi |
|
pekfos |
» 2013-09-29 20:17:57 Nie można podać stałego obiektu do funkcji, która przyjmuje referencję, zamiast referencji na stałą. |
|
mbooge Temat założony przez niniejszego użytkownika |
» 2013-09-29 21:12:40 A gdy obiekt nie jest stały? Nie powinna wystarczyć wtedy zwykła referencja? Jeśli np wszystkie atrybuty klasy są public...nie wiem czy dobrze rozumuję |
|
pekfos |
» 2013-09-29 21:18:34 Jeśli obiekt nie jest stały, to zwykła referencja wystarczy. |
|
Monika90 |
» 2013-09-29 21:53:29 Funkcję której parametrem jest referencja do nie-const można wywołać tylko z modyfikowalną L-wartością. Natomiast jeżeli jej parametrem jest referencja do const, to można zarówno z L-wartością jaki i z R-wartością.
W przykładowym programie wyrażenia takie jak b*c to są R-wartości, więc jeżeli chcesz aby wynik wyrażenia b*c był argumentem dla jakiegoś innego operatora, to ten operator musi mieć parametr typu const Int&, albo po prostu Int.
Więc jeżeli chcesz się w przykładowym programie pozbyć const, to możesz zamienić const Int& na Int (tylko nie ruszaj konstuktora kopiującego).
|
|
mbooge Temat założony przez niniejszego użytkownika |
» 2013-09-29 22:20:42 Dobra dzięki za odzew już zrozumiałem to czego chciałem się dowiedzieć ;) |
|
« 1 » |