operatory *& obok siebie

0

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

void funkcja ( Klasa*& dana){}
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.

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);

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);

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