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 ;  
 } ;
В С++ что означает тильда "~" перед именем функции?
Ответ 1
Это деструктор, он уничтожает экземпляр, освобождает память и т.д. и т.д.
Вот описание с ibm.com:
Деструкторы обычно используются для освобождения памяти и выполнения другой очистки для объекта класса и его членов класса при уничтожении объекта. Деструктор вызывается для объекта класса, когда этот объект выходит из области видимости или явно удален.
См. https://www.ibm.com/support/knowledgecenter/SSB27U_5.4.0/com.ibm.zos.r9.cbclx01/cplr380.htm
Ответ 2
Как отмечали другие, в том случае, когда вы спрашиваете, что это деструктор для class Stack.
Но ответ на ваш вопрос точно так, как он появляется в названии:
В С++ что означает тильда "~" перед именем функции?
есть другая ситуация. В любом контексте, кроме непосредственно перед именем класса (который является контекстом деструктора), ~ является единственным дополнением (или побитовым). Чтобы быть уверенным, что это не происходит очень часто, но вы можете представить себе такой случай, как
if (~getMask()) { ...
который выглядит похожим, но имеет совсем другое значение.
Ответ 3
Это деструктор. Функция гарантированно вызывается, когда объект выходит из области видимости.
Ответ 4
Это деструктор. Он вызвал, когда объект был уничтожен (из жизни или удален).
Чтобы быть понятным, вы должны использовать ~ NameOfTheClass как для конструктора, другие имена недопустимы.
Ответ 5
Это деструктор. Этот метод вызывается, когда уничтожается экземпляр вашего класса:
Stack<int> *stack= new Stack<int>;
//do something
delete stack; //<- destructor is called here;
		Ответ 6
Это будет деструктор (освобождение любой динамической памяти)