przekazywanie obiektu do metody
Ostatnio zmodyfikowano 2016-02-09 17:10
zolty13 Temat założony przez niniejszego użytkownika |
przekazywanie obiektu do metody » 2016-02-09 16:33:06 czesc mam problem otoz czemu ten kod nie działa w internecie pojawia się wersja ze przy deklaracjimetody void m ma być Klasa &x jako argument i pytanie brzmi czemu tak się dzieje? Po co jest ta referencja skoro nie zmieniam obiektow tylko wypisuje tekst na ekran #include <iostream>
class Klasa { public: void m( Klasa x ) { if( this == & x ) std::cout << "Uzyto tego samego obiektu" << std::endl; else std::cout << "Uzyto innego obiektu" << std::endl; } };
int main() { Klasa a, b; a.m( b ); b.m( b ); return 0; }
[ cpp\] |
|
michal11 |
» 2016-02-09 16:40:59 W twoim kodzie x jest przekazywany przez kopię (domyślnie) czyli przy każdym wywołaniu m() tworzona jest kopia tego co przekazujesz jako argument tej metody. Jeżeli zadeklarujesz ją tak: void m( Klasa & x ) to wtedy x jest przekazywany przez referencję. |
|
zolty13 Temat założony przez niniejszego użytkownika |
» 2016-02-09 16:59:45 no tak wiec po co ta referencja skoro nie modyfikuje obiektowtylkosprawdzam ich adresy i pisze czy to ten sam? Edit no faktycznie skoro to kopia to nie ma tego samego adresu bo jest na stosie(?) troche nie ogarnalem dzięki wielkie :) |
|
mateczek |
» 2016-02-09 17:10:16 Bo przekazując przez wartość tworzysz kopie obiektu !!! i uzyskujesz adres kopij obiektu !!! |
|
« 1 » |