• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeciązenie operatora rownania w klasie ala string, po co zwracany *this?

Object Storage Arubacloud
0 głosów
135 wizyt
pytanie zadane 21 grudnia 2015 w C i C++ przez Melchior Obywatel (1,300 p.)

Jest to przykład z ksiązki szkoła programowania VI S.Prata, str 570

Stringbad & Stringbad::operator=(const Stringbad & st)
{
if(this==&st)
       return *this;

delete []str ;
len = st.len ;
str = new char [len+1] ;
std::strcpy(str,st.str);
return *this
}


Nie potrafię zrozumieć co robi ta zwracana wartość *this, skoro len i str już są zamienione, pomoże ktoś ?:D

edit: jest to funkcja przeciążająca operator równania dla 2 wczesniejszych utworzonych obiektow tj:

Stringbad s1, s2 ;

s1 = s2 ;

 

1 odpowiedź

+2 głosów
odpowiedź 21 grudnia 2015 przez draghan VIP (106,230 p.)
edycja 21 grudnia 2015 przez draghan

Zwracasz *this, ponieważ typ zwracanej funkcji to referencja do obiektu. ;) Miej na uwadze, że w C++ praktycznie wszystko jest wyrażeniem.

Robi się w ten sposób po to, żeby możliwe były, np. takie czary:

s1 = s2 = s3; /* gdyby operator przypisania nie zwracał referencji do obiektu, nie
dałoby się w ten sposób przypisywać wartości do s1 */

funkcja(s1 = s2); /* funkcja(Stringbad &) pobiera jako argument wartość s1, która
jednocześnie przypisywana jest z s2 */

 

EDIT:
Dodam jeszcze zdanie, bo sądzę że mogło mi umknąć klarowne wyjaśnienie. Operator ten zwraca wartość po to, żeby po wykonaniu swojej roboty (przepisaniu właściwości obiektu) pozostawić w miejscu swojego wywołania 'kopię' tego obiektu do dalszych operacji (przykładowe takie operacje przedstawiłem wyżej).

 

Podobne pytania

0 głosów
2 odpowiedzi 317 wizyt
0 głosów
1 odpowiedź 574 wizyt
0 głosów
1 odpowiedź 273 wizyt
pytanie zadane 13 listopada 2016 w C i C++ przez orlicki12 Początkujący (450 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...