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
Wie andere angemerkt haben, ist in dem Fall, in dem Sie danach fragen, der Destruktor für
class Stack
.Aber nehmen Sie Ihre Frage genau so, wie sie im Titel erscheint:
Es gibt eine andere Situation. In jedem Kontext, außer unmittelbar vor dem Namen einer Klasse (der der Destruktorkontext ist),
~
ist dies der Komplementoperator (oder der bitweise nicht). Natürlich kommt es nicht sehr oft vor, aber Sie können sich einen Fall wie diesen vorstellendas sieht ähnlich aus, hat aber eine ganz andere Bedeutung.
quelle
Es ist ein Zerstörer. Die Funktion wird garantiert aufgerufen, wenn das Objekt den Gültigkeitsbereich verlässt.
quelle
Dies ist ein Destruktor. Es wird aufgerufen, wenn das Objekt zerstört wird (außerhalb des Lebensbereichs oder gelöscht).
Um klar zu sein, müssen Sie ~ NameOfTheClass wie für den Konstruktor verwenden, andere Namen sind ungültig.
quelle
Es ist der Zerstörer. Diese Methode wird aufgerufen, wenn die Instanz Ihrer Klasse zerstört wird:
quelle
Das wäre der Destruktor (der jeglichen dynamischen Speicher freigibt)
quelle