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

Przeciążenia operatorów, const

Ostatnio zmodyfikowano 2013-09-29 22:20
Autor Wiadomość
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 (» Programowanie obiektowe, C++ » PodstawyOperatory lekcja). 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
P-92887
pekfos
» 2013-09-29 20:17:57
Nie można podać stałego obiektu do funkcji, która przyjmuje referencję, zamiast referencji na stałą.
P-92890
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ę
P-92892
pekfos
» 2013-09-29 21:18:34
Jeśli obiekt nie jest stały, to zwykła referencja wystarczy.
P-92893
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).
P-92895
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ć ;)
P-92897
« 1 »
  Strona 1 z 1