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;
}
運行結果: