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