c中解構函式在什麼時候才會被呼叫

時間 2021-09-04 02:34:22

1樓:匿名使用者

在該類生成的物件例項宣告週期結束時,才被呼叫解構函式,在定義類時,進行宣告、定義,主要用來釋放申請的資源,如定義了指標變數,並對其進行空間分配( new xx ),就可以在解構函式中

釋放資源。舉例入下

class a

~a()

}}// end of class a

2樓:匿名使用者

解構函式是在物件銷燬的時候被系統呼叫的。

另外,你這裡說反了,如果去掉foo裡面去掉&,就會多生成一個臨時變數,foo結束後,這個物件會被析構,這時候就會多輸入一個destructor。如果是原來的a foo(a& anobj)這裡的引數是引用,則不會建立一個物件,也就沒有所謂析構。所以引用不會多一個destructor

其實main裡面裡面也有定義兩個a物件,在退出main的時候,也會被呼叫的,你在命令列裡執行程式可以看到,程式結束後會有兩個destructor輸出:

default constructor calledinside foo

copy constructor calleddestructor called // main函式裡的a析構destructor called // main函式裡的a析構press any key to continue這是我在vc中執行的結果。

3樓:0無_心

因為析構的時候你已經退出了。。。自然就顯示不出來了。。。一般在new之後用delete可以看到結果

c++解構函式在什麼時候自動呼叫?

4樓:周雲的問題

析構抄函式(destructor) 與建構函式相反,當物件脫離其作用域時(例如物件所在的函式已呼叫完畢),系統自動執行解構函式。解構函式往往用來做「清理善後」 的工作(例如在建立物件時用new開闢了一片記憶體空間,應在退出前在解構函式中用delete釋放)。

5樓:匿名使用者

p1.~point(); 你自己呼叫了一次,但是沒有析構物件

主函式結尾,程式結束前,銷燬物件自動呼叫解構函式,構造了兩個物件呼叫兩次

6樓:匿名使用者

在函式退出時會自動調查用!和建構函式相板的。

c中建構函式與解構函式的問題,C 中建構函式與解構函式的問題

你的getname函式在 你的類定義中只有getscore和getid c 關於建構函式和解構函式呼叫次數的問題 沒問題啊。引數傳遞的時候第一次拷貝構造呼叫,在函式返回的時候賦值給c2 再次呼叫了拷貝構造。析構的話 c1 c2 c 三次 傳遞引數和返回引數各一次拷貝建構函式,所以是2次 有兩個物件c...

C語言中函式什麼時候宣告?什麼時候定義?最好舉例說明

函式可以在呼叫函式的函式 比如main函式 之前定義,這樣就無需宣告瞭 舉例 int add int x,int y 在編譯程式編譯到main的呼叫add之處時,由於已經編譯過add的函式了,因此編譯程式已經知曉呼叫規則,因此可以省略宣告語句 void main 如果函式在呼叫函式的函式之後定義,為...

在C語言程式設計中,什麼時候要在開始時寫上 includes

要用到裡面的函式的時候,比如printf scanf,都是 stdio.h裡面定義的函式當然stdio.h裡面不僅僅只有以上兩個,有關輸入輸出的函式大多數都定義了在這其中 有興趣可以自己查查 include是必須寫的有時還需要math stdio.h就是指 standard input output...