C++構造方法和析構方法:
首先我們先寫一個類,在類裏寫我們所需要的析構和構造方法:
class point {
public :
point(){
cout << "create a project" << endl;
};//構造方法
~point(){
cout << "delete a project" << endl;
}//析構方法
};
當我們使用new關鍵字時,構造方法就被執行了。
int main()
{
point *p = new point();
return 0;
}
而輸出的結果也就是create a project;
而當我們使用與new所相對應的delete的關鍵字時,析構方法就被執行了。
int main()
{
point *p = new point();
delete p;
return 0;
}
輸出的結果就是:
create a project
delete a project
當我們在主程序中直接定義個值對象而不是個指針時。
它有構造也有析構。
int main()
{
// point *p = new point();
// delete p;
point p;
return 0;
}
它的輸出結果是:
create a project
delete a project
現在我們就來看看析構函數是什麼時候被執行的。
#include <iostream>
using namespace std;
class point {
public :
point(){
cout << "create a project" << endl;
};//構造方法
~point(){
cout << "delete a project" << endl;
}//析構方法
};
void run_point(){
point p;
}
int main()
{
// point *p = new point();
// delete p;
run_point();
cout << "the end" << endl;
return 0;
}
當我們這樣寫時,它的輸出結果就是:
create a project
delete a project
the end當我們在run_point中加上:
void run_point(){
{
point p;
}
cout << 1 << endl;
}
此時它的輸出結果就是:
create a project
delete a project
1
the end而當我把run_point中的大括號刪掉後:
void run_point(){
// {
point p;
// }
cout << 1 << endl;
}
它的結果就是:
create a project
1
delete a project
the end由此我們就可以得出結論了。析構函數是在構造方法全部執行完後,也就是那個代碼塊執行完後,就會執行析構函數。
PS:不可碌碌無爲。