【问题标题】:In c++ what does a tilde "~" before a function name signify?在 C++ 中,函数名前的波浪号“~”表示什么?
【发布时间】:2010-11-26 14:24:48
【问题描述】:
 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 ;  
 } ;

【问题讨论】:

    标签: c++


    【解决方案1】:

    它是析构函数,它销毁实例,释放内存等等。

    这是来自 ibm.com 的描述:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 旧答案...我想我的意思是在 ~ 之后它可以是任何名称,只要它与类名和构造函数名称相同。
      【解决方案3】:

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

      【讨论】:

      • ...如果它分配在堆栈上。如果对象分配在堆上,则在对象上调用“删除”时。
      • @Jherico:实际上是在使用关键字“delete”的时候。请记住,关键字“new”调用“operator new”,然后在返回的地址上调用构造函数,因此完全有可能在堆栈上“新建”内存。 :) 关键字“delete”调用析构函数,然后调用“operator delete”。
      • @Jherico 或位于命名空间范围内,或者是静态类成员或函数局部静态变量:静态存储持续时间。换句话说:所有具有自动存储功能的变量都将在适当的时候自动被销毁。当心Static Initialization Order Fiasco
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          正如其他人所指出的,在您询问的情况下,它是class Stack 的析构函数。

          但要完全按照标题中显示的方式回答您的问题:

          在 C++ 中,函数名前的波浪号“~”表示什么?

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

          if (~getMask()) { ...
          

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

          【讨论】:

            猜你喜欢
            • 2010-09-16
            • 2019-09-16
            • 2012-08-31
            • 2012-11-30
            • 1970-01-01
            • 2014-05-20
            • 2011-05-02
            • 2022-10-18
            相关资源
            最近更新 更多