析構函數:
在這個對象的作用域最後.. 比如你在main裏面聲明瞭一個類A..那麼~A()會在main結束時調用.. 如果在自定義的函數f()裏面聲明瞭一個A 函數f結束的時候就會調用~A() 或者你delete 指向A的指針.. 或者顯式的調用析構函數
析構函數:
在這個對象的作用域最後.. 比如你在main裏面聲明瞭一個類A..那麼~A()會在main結束時調用.. 如果在自定義的函數f()裏面聲明瞭一個A 函數f結束的時候就會調用~A() 或者你delete 指向A的指針.. 或者顯式的調用析構函數
也就是說在包含該對象的函數的末尾就會調用析構函數嘍?
是的.... 局部的對象 在該對象聲明的函數末尾被釋放... 你可以看下作用域的定義..析構函數就是在對象的作用域的末尾釋放 爲了不誤導人...我還是舉個例子.. 如果是 class A { .... } void f() { A a; //這種情況a的作用域就是整個函數 在f末尾釋放 } void f() { for(A a;a.yes();a++)//這裏聲明的是一個計數器a..(這種情況一般是迭代器).. { ... } //這裏是a作用域結束的時候 調用析構函數 } void f() { A* p=new A; delete p;//A作用域結束 調用析構 } 如果A是全局對象..那麼就在程序末尾釋放