c++ - una - reglas para nombrar variables en programación
En c++, ¿qué significa una tilde "~" antes del nombre de una función? (6)
Como otros han notado, en la instancia que está preguntando acerca de esto, es el destructor para la class Stack
.
Pero tomando su pregunta exactamente como aparece en el título:
En c ++, ¿qué significa una tilde "~" antes del nombre de una función?
hay otra situación En cualquier contexto excepto inmediatamente antes del nombre de una clase (que es el contexto del destructor), ~
es el operador del complemento de uno (o de bit no). Para estar seguro de que no aparece muy a menudo, pero se puede imaginar un caso como
if (~getMask()) { ...
que se ve similar, pero tiene un significado muy diferente.
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 ;
} ;
Es el destructor, destruye la instancia, libera memoria, etc., etc.
Aquí hay una descripción de ibm.com:
Los destructores se usan generalmente para desasignar la memoria y hacer otras tareas de limpieza para un objeto de clase y sus miembros de clase cuando se destruye el objeto. Se solicita un destructor para un objeto de clase cuando ese objeto pasa fuera del alcance o se elimina explícitamente.
Consulte https://www.ibm.com/support/knowledgecenter/SSB27U_5.4.0/com.ibm.zos.r9.cbclx01/cplr380.htm
Es el destructor. Se llama a este método cuando se destruye la instancia de su clase:
Stack<int> *stack= new Stack<int>;
//do something
delete stack; //<- destructor is called here;
Es un destructor. Se garantiza que se llamará a la función cuando el objeto se salga del alcance.
Ese sería el destructor (liberando cualquier memoria dinámica)
Este es un destructor. Se invoca cuando el objeto se destruye (fuera del alcance de la vida o eliminado).
Para ser claros, debes usar ~ NameOfTheClass para el constructor, otros nombres no son válidos.