Como otros han señalado, en el caso de que pregunte es el destructor 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 destructor), ~es el operador complementario (o no a nivel de bit). Para estar seguro de que no aparece con mucha frecuencia, pero puedes imaginar un caso como
if (~getMask()) { ...
que se ve similar, pero tiene un significado muy diferente.