In c++ what does a tilde “~” before a function name signify?

前端 未结 6 2211
孤街浪徒
孤街浪徒 2020-12-04 07:24
 template 
 class Stack
 {
 public:
    Stack(int = 10) ; 
    ~Stack() { delete [] stackPtr ; }  //<--- What does the \"~\" signify?
    int push(         


        
相关标签:
6条回答
  • 2020-12-04 07:52

    It's a destructor. The function is guaranteed to be called when the object goes out of scope.

    0 讨论(0)
  • 2020-12-04 07:54

    As others have noted, in the instance you are asking about it is the destructor for class Stack.

    But taking your question exactly as it appears in the title:

    In c++ what does a tilde “~” before a function name signify?

    there is another situation. In any context except immediately before the name of a class (which is the destructor context), ~ is the one's complement (or bitwise not) operator. To be sure it does not come up very often, but you can imagine a case like

    if (~getMask()) { ...
    

    which looks similar, but has a very different meaning.

    0 讨论(0)
  • 2020-12-04 07:59

    This is a destructor. It's called when the object is destroyed (out of life scope or deleted).

    To be clear, you have to use ~NameOfTheClass like for the constructor, other names are invalid.

    0 讨论(0)
  • 2020-12-04 08:05

    It's the destructor, it destroys the instance, frees up memory, etc. etc.

    Here's a description from ibm.com:

    Destructors are usually used to deallocate memory and do other cleanup for a class object and its class members when the object is destroyed. A destructor is called for a class object when that object passes out of scope or is explicitly deleted.

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

    0 讨论(0)
  • 2020-12-04 08:07

    It's the destructor. This method is called when the instance of your class is destroyed:

    Stack<int> *stack= new Stack<int>;
    //do something
    delete stack; //<- destructor is called here;
    
    0 讨论(0)
  • 2020-12-04 08:17

    That would be the destructor(freeing up any dynamic memory)

    0 讨论(0)
提交回复
热议问题