template <class T>
class Stack
{
public:
Stack(int = 10) ;
~Stack() { delete [] stackPtr ; } //<--- What does the "~" signify?
int push(const T&);
int pop(T&) ;
int isEmpty()const { return top == -1 ; }
int isFull() const { return top == size - 1 ; }
private:
int size ;
int top ;
T* stackPtr ;
} ;
136
Jak zauważyli inni, w instancji, o którą pytasz, jest to destruktor
class Stack
.Ale biorąc pytanie dokładnie tak, jak pojawia się w tytule:
jest inna sytuacja. W każdym kontekście, z wyjątkiem bezpośrednio przed nazwą klasy (która jest kontekstem destruktora),
~
jest operatorem dopełnienia (lub nie bitowym). Z pewnością nie zdarza się to zbyt często, ale możesz sobie wyobrazić taki przypadekktóry wygląda podobnie, ale ma zupełnie inne znaczenie.
źródło
To niszczyciel. Funkcja zostanie wywołana, gdy obiekt znajdzie się poza zakresem.
źródło
To jest destruktor. Jest wywoływana, gdy obiekt zostanie zniszczony (poza zakresem życia lub usunięty).
Żeby było jasne, musisz użyć ~ NameOfTheClass jak dla konstruktora, inne nazwy są nieprawidłowe.
źródło
To jest niszczyciel. Ta metoda jest wywoływana, gdy instancja Twojej klasy zostanie zniszczona:
źródło
To byłby destruktor (zwalniający pamięć dynamiczną)
źródło