Tak jak w nazwie tematu, chciałbym, abyście przybliżyli mi bardziej czy właśnie warto z nich korzystać oraz przy jakich sytuacjach?
risen napisał(a)
Tak jak w nazwie tematu, chciałbym, abyście przybliżyli mi bardziej czy właśnie warto z nich korzystać oraz przy jakich sytuacjach?
Chodzi Ci o jakieś konkretne zastosowanie? Jeśli nie, to odpowiedź jest prosta. Warto - bez nich wiele rzeczy byłoby... delikatnie mówiąc trudniejsze ;).
Nawet bardziej, niemożliwe.
Czasem nawet użycie wskaźników staje się niezbędne.
Co do zalet ich użycia podam przykład z życia wzięty:
class Example
{
int a, b, c, d, e;
};
int main()
{
Example obj;
Example *pExample = new Example();
cout << sizeof( pExample ) << "\n" << sizeof( obj );
delete pExample;
return 0;
}
Tworzysz sobie obiekt ( zajmuje on 20B ), tworząc dynamicznie obiekt za pomocą wskaźnika rozmiar jego wynosi 4B ( zależnie od architektury ). Jaka jest więc zaleta stosowania wskaźników? Co jest bardziej opłacalne, przechowywanie 1000 obiektów w tablicy, czy 1000 wskaźników?
matek3005 napisał(a)
Tworzysz sobie obiekt ( zajmuje on 20B ), tworząc dynamicznie obiekt za pomocą wskaźnika rozmiar jego wynosi 4B ( zależnie od architektury ).
Przykład trochę nietrafiony, ja doliczyłem się narzutu 20B+4B = 24B. Chyba że Twój wskaźnik będzie sobie po prostu istniał ;). Wtedy jest jednak trochę mniej funkcjonalny.
Jeśli jednak chcemy przechowywać obiekty w tablicy, powiększać potem jej rozmiar czy w inny sposób działać jakoś na niej to nie wiem czy nie lepiej jest przechowywać w niej wskaźniki do tych obiektów niż same obiekty, a o to mi chodziło w przykładzie :)
matek napisał(a)
Jeśli jednak chcemy przechowywać obiekty w tablicy, powiększać potem jej rozmiar czy w inny sposób działać jakoś na niej to nie wiem czy nie lepiej jest przechowywać w niej wskaźniki do tych obiektów niż same obiekty, a o to mi chodziło w przykładzie :)
W przypadku tablicy to ma raczej mniejsze znaczenie. Ale np w funkcji:
void function(LolClass lol){
}
Wykorzystanie wskaźnika bądź referencji zaoszczędziłoby sporo pamięci, oraz procesora(chyba że rzeczywiście chcemy stworzyć kopię obiektu).