在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 ; } ;
它是析构函数,销毁实例,释放内存等。
以下是来自ibm.com的描述:
析构函数通常用于释放内存,并在对象被销毁时为类对象及其类成员进行其他清理。 当对象超出作用域或被显式删除时,将为类对象调用析构函数。
请参阅https://www.ibm.com/support/knowledgecenter/SSB27U_5.4.0/com.ibm.zos.r9.cbclx01/cplr380.htm
正如其他人已经注意到,在你问的这个实例是class Stack
的析构函数。
但是正如您在标题中出现的问题一样:
在c ++中,在函数名称表示之前代字符“〜”是什么?
还有另一种情况。 除了紧接在类的名称之前的任何上下文(这是析构函数的上下文)之外, ~
是补码(或者不是位运算符)。 可以肯定的是,它不会经常出现,但你可以想象一个像这样的情况
if (~getMask()) { ...
这看起来相似,但是却有着非常不同的含义。
这是一个析构函数。 当对象超出范围时,保证函数被调用。
这是一个析构函数。 它在对象被销毁时被调用(超出生命范围或被删除)。
要清楚的是,你必须使用〜NameOfTheClass之类的构造函数,其他名称是无效的。
这是破坏者。 当你的类的实例被销毁时,这个方法被调用:
Stack<int> *stack= new Stack<int>; //do something delete stack; //<- destructor is called here;
这将是析构函数(释放任何dynamic内存)