2011-04-10 52 views
2

可能重複:
In c++ what does a tilde 「~」 before a function name signify?什麼是'〜'用於C++?

是用什麼線了〜和其他線之間的區別?

public:  
     myClass() {};  
     ~myClass() {}; 
+10

你用什麼書或教程來學習C++? – 2011-04-10 04:33:02

+2

確實是一個苛刻的downvote位。在google上搜索'C++〜'不會產生任何用處。 – 2011-04-10 04:35:31

+1

讓我回應@Greg - 讓自己成爲一本好的C++書,閱讀它,並從中學習。你可以從這個列表開始:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – 2011-04-10 04:36:22

回答

7

myClass(){}被稱爲構造函數和~myClass(){}被稱爲析構函數!

創建對象時調用構造函數,並且銷燬對象時調用析構函數。

myClass *pObj = new myClass(); //constructor is invoked; 
//work with pObj; 

delete pObj; //destructor is invoked; 

也就是說當您使用newdelete的例子。 new會導致構造函數被調用,而delete會導致析構函數被調用。

讓我們看看一個例子:

{ 
    myClass Obj; //constructor is automatically invoked; 
    //work with Obj; 


} //<--here Obj goes out of scope which causes destructor to be automatically invoked; 

隨着自動對象,構造函數被自動調用,並且當對象超出範圍,析構函數自動調用。

+2

+1 fpr花時間 – 2011-04-10 04:36:03

+1

非常感謝! – 2011-04-10 04:37:37

0

函數「myClass」是一個構造函數,並在創建該類型的對象時調用。一個類可以提供多個不同的構造函數,可以用來創建(即構造)該類型的對象。

函數「〜myClass」是一個析構函數,當該類型的對象被銷燬時(當自動存儲分配的實例超出作用域時或在指向該類型的動態分配實例時發生已使用delete運算符刪除)。雖然一個類可以提供多個構造函數,但一個類只能提供一個析構函數。

當一個類有虛擬方法時,析構函數也應該被標記爲虛擬的。