在 c + + 中,函数名前面的波浪线“ ~”表示什么?

 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 ;
} ;
132290 次浏览

它是析构函数,它破坏实例,释放内存,等等。

下面是来自 ibm.com 的描述:

析构函数通常用于释放内存,并在对象被销毁时对类对象及其类成员进行其他清理。当类对象超出范围或被显式删除时,将为该类对象调用析构函数。

参见 https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_74/rzarg/cplr380.htm

这是一个析构函数。当对象被销毁(超出生命范围或被删除)时调用它。

为了清楚起见,您必须使用 ~ NameOfTheClass 作为构造函数,其他名称无效。

它是一个析构函数,当对象超出作用域时,函数保证会被调用。

那就是析构函数(释放任何动态内存)

它是析构函数。当你的类的实例被销毁时,这个方法被调用:

Stack<int> *stack= new Stack<int>;
//do something
delete stack; //<- destructor is called here;

正如其他人所指出的,在您询问它的实例中,它是 class Stack的析构函数。

但是按照标题来回答你的问题:

在 c + + 中,函数名前面的波浪线“ ~”表示什么?

还有一个情况。在任何上下文中,紧靠类名(即析构函数上下文)之前的 除了中,~是补运算符(或按位不是)。可以肯定的是,这种情况不会经常出现,但是你可以想象一下这样的情况

if (~getMask()) { ...

看起来很相似,但是含义不同。