Wskaźniki w metodzie klasy

Wskaźniki w metodzie klasy
TR
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam, mam pewnie banalne pytanie dla obeznanych w temacie:

Kopiuj
// usuwa z listy element p poczawszy od elementu o indeksie nr ze skokiem jump

    void skip(unsigned int nr = 1, unsigned int jump = 1)
    {
        TlistElement * p;
        for (int i = nr; i <= counter; i += jump) { // dla i = 1 usuwa co drugi poczynajac od pierwszego; dla i = 2 usuwa co drugi poczynajac od drugiego
                p = this->index(i);
                this->erase(p);
        }
    }

Napisałem sobie taką dodatkową metodę listy usuwającą co któryś element.
Czy wskaźnik, który utworzyłem w metodzie "TlistElement * p;" jest automatycznie usuwany po zakończeniu działania metody.
Tylko uwaga nie chodzi mi o usuwanie tego na co wskazuje wskaźnik, bo tym zajmie się metoda erase() tylko o usunięcie samego wskaźnika. Innymi słowami czy ten wskaźnik jest taj jakby zmienną lokalną?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Czy zrobiłeś gdzieś new? Nie?! To zapomnij o delete!
Wystarczy:

Kopiuj
void skip(unsigned nr=1,unsigned jump=1) { for(unsigned i=nr;i<=counter;i+=jump) erase(index(i)); }
TR
  • Rejestracja: dni
  • Ostatnio: dni
0

Ok, rozumiem, dobry sposób na krótszy zapis, tylko myślę że i tak kompilator wygeneruje kod, który wcześniej napisałem, więc pod względem szybkości myślę że będzie to samo (zwrócona wartość i tak musi zostać przypisana do tymczasowego wskaźnika przed przekazaniem do funkcji).
Btw odnośnie mojego pierwszego pytania, dowiedziałem się że wskaźnik (nie to co wskazuje oczywiście) zostanie usunięty po wyjściu z metody.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
TRexi napisał(a):

Btw odnośnie mojego pierwszego pytania, dowiedziałem się że wskaźnik (nie to co wskazuje oczywiście) zostanie usunięty po wyjściu z metody.

Jeżeli ten wskaźnik zostaje usunięty to w takim razie zostają usunięte również zmienne: nr,jump,i jak również for - debilnie brzmi, nieprawdaż?
Wskaźnik nie zostaje usunięty - to zmienna lokalna, nie potrzebuje usunięcia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.