В С++ что означает тильда «~» перед именем функции?

Вопрос: template class Stack { public: Stack(int = 10) ; ~Stack() { delete [] stackPtr ; } //

Вопрос: 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

Это будет деструктор (освобождение любой динамической памяти)

Оцените статью
Добавить комментарий