Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c++;瓷砖是什么~&引用;在函数名表示之前? 模板 类堆栈 { 公众: 堆栈(int=10); ~Stack(){delete[]stackPtr;}/_C++ - Fatal编程技术网

C++ 在c++;瓷砖是什么~&引用;在函数名表示之前? 模板 类堆栈 { 公众: 堆栈(int=10); ~Stack(){delete[]stackPtr;}/

C++ 在c++;瓷砖是什么~&引用;在函数名表示之前? 模板 类堆栈 { 公众: 堆栈(int=10); ~Stack(){delete[]stackPtr;}/,c++,C++,它是析构函数,它破坏实例,释放内存,等等 以下是来自ibm.com的描述: 析构函数通常用于在类对象及其类成员被销毁时释放内存和进行其他清理。当类对象超出范围或被显式删除时,会为该类对象调用析构函数 请参见这是一个析构函数。当对象被销毁(超出生命范围或被删除)时会调用它 为了清楚起见,必须对构造函数使用~nameofclass like,其他名称无效。这是一个析构函数。保证在对象超出范围时调用该函数。这将是析构函数(释放所有动态内存)它是析构函数。当类的实例被销毁时,将调用此方法: templ

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

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

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


请参见

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


为了清楚起见,必须对构造函数使用~nameofclass like,其他名称无效。

这是一个析构函数。保证在对象超出范围时调用该函数。

这将是析构函数(释放所有动态内存)

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

 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 ;  
 } ;
Stack*Stack=新堆栈;
//做点什么

delete stack;//正如其他人所指出的,在您询问的实例中,它是
类堆栈的析构函数

但是,请按照标题中的内容回答您的问题:

在C++中,函数名前的一个倾斜“~~”是什么? 还有另一种情况。在任何上下文中,除了类的名称(析构函数上下文)之前,
~
是一个补码(或按位not)运算符。可以肯定的是,它不会经常出现,但您可以想象这样的情况

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

它看起来很相似,但有一个非常不同的含义。

…如果它是在堆栈上分配的。如果它是在堆上分配的,那么在对象上调用“delete”时。@Jherico:实际上是在使用关键字“delete”时。记住关键字“new”调用“operator new”然后对返回的地址调用构造函数,这样就完全可以在堆栈上“新建”内存。:)关键字“delete”调用析构函数,然后调用“operator delete”.@Jherico或居住在命名空间范围内,或是静态类成员或函数本地静态变量:静态存储持续时间。换句话说,所有具有自动存储的变量将在适当时自动销毁。请注意旧答案…我想我的意思是~之后可以是任何名称,只要a与类名a相同nd构造函数名称。
if (~getMask()) { ...