Wskaźniki w metodzie klasy

0

Witam, mam pewnie banalne pytanie dla obeznanych w temacie:

// 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ą?

0

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

void skip(unsigned nr=1,unsigned jump=1) { for(unsigned i=nr;i<=counter;i+=jump) erase(index(i)); }
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.

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.

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