17_構造和析構函數概述

1、構造和析構函數的概述

構造函數和析構函數,這兩個函數將會被編譯器自動調用構造函數完成對象的初始化動作析構函數在對象結束的時候完成清理工作

注意:對象的初始化和清理工作是編譯器強制我們要做的事情,即使你不提供初始化操作和清理操作,編譯器也會給你增加默認的操作,只是這個默認初始化操作不會做任何事。

構造函數:實例化對象的時候系統自動調用

析構函數:對象釋放的時候系統自動調用

2、構造和析構函數定義

構造函數語法:

構造函數函數名類名相同,沒有返回類型,連void都不可以,但可以有參數,可以重載

析構函數語法:

析構函數函數名是在類名前面加”~”組成,沒有返回類型,連void都不可以,不能有參數,不能重載

案例:

class Data
{
public:
    int num;
public:
    //構造函數(無參的構造)
    Data()
    {
        num = 0;
        cout<<"無參的構造函數"<<endl;
    }
    //構造函數(有參的構造)
    Data(int n)
    {
        num = n;
        cout<<"有參的構造函數"<<endl;
    }

    //析構函數
    ~Data()
    {
        cout<<"析構函數"<<endl;
    }

};
void test01()
{
    //類實例化對象 系統自定調用構造函數
    Data ob;
    
    //函數結束的時候 局部對象ob 被釋放 系統自動調用析構函數
}
int main(int argc, char *argv[])
{
    cout<<"-----001-----"<<endl;
    test01();
    cout<<"------002-------"<<endl;
    return 0;
}

運行結果:

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