operatory *& obok siebie

c
2011-10-21 16:33
c
0

mogłby mi ktos wytlumaczyc co oznaczaje te operatory razem polaczone?

void funkcja ( Klasa*& dana){}
edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-10-21 16:36

Rejestracja: 16 lat temu

Ostatnio: 20 minut temu

0

referencja na wskaźnik. zapisz sobie tak, to lepiej widać:

Klasa* &dana

pozwala z wewnątrz funkcji zmienić wartość wskaźnika, a nie tylko obiektu.

edytowany 1x, ostatnio: Azarien, 2011-10-21 16:36

Pozostało 580 znaków

c
2011-10-21 16:49
c
0

Nie wiem czy dobrze rozumiem, ale :

void funkcja( Klasa * &zmienna){

zmienna->cos();
zmienna = 123; // tutaj wykorzystuje sie referencje na wskaznik? zmienna jak i klasa wskazuje na obszar w pamieci 123? ( o ile taki zapis jest poprawny przy identyfikacji pamieci);

}

Klasa klasa;
funckja(&klasa);

Pozostało 580 znaków

2011-10-21 19:16

Rejestracja: 8 lat temu

Ostatnio: 3 lata temu

0

Dzieki referencji do wskaźnika możesz zrobić coś takiego:

class Foo
{
public:
    int x;
};

void initObject(Foo*& f)
{
    f = new Foo;
    f->x = 10;
}

int _tmain(int argc, _TCHAR* argv[])
{
    Foo* pFoo = nullptr;
    initObject(pFoo);

    cout<<pFoo->x;
    return 0;
}

Czyli wewnątrz funkcji możesz zainicjować wskaźnik, który został jej przekazany jako parametr. W podobny sposób można to zrobić ze wskaźnikiem do wskaźnika

void initObject2(Foo** f)
{
    *f = new Foo;
    (*f)->x = 12;
}

i w main()
initObject(&f);

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0