Como outros observaram, no exemplo em que você está perguntando, é o destruidor class Stack
.
Mas, tomando sua pergunta exatamente como aparece no título:
Em c ++, o que significa um til "~" antes do nome de uma função?
existe outra situação. Em qualquer contexto, exceto imediatamente antes do nome de uma classe (que é o contexto destruidor), ~
é o operador de complemento (ou não bit a bit). Para ter certeza de que não aparece com muita frequência, mas você pode imaginar um caso como
if (~getMask()) { ...
que parece semelhante, mas tem um significado muito diferente.