C/C++:C++構造方法和析構方法


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:不可碌碌無爲。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章