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

przekazywanie obiektu do metody

Ostatnio zmodyfikowano 2016-02-09 17:10
Autor Wiadomość
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

C/C++
#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\]
P-144642
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ę.
P-144643
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 :)
P-144645
mateczek
» 2016-02-09 17:10:16
Bo przekazując przez wartość tworzysz kopie obiektu !!! i uzyskujesz adres kopij obiektu !!!
P-144646
« 1 »
  Strona 1 z 1