1. 程式人生 > 其它 >類和物件-物件特性-建構函式和解構函式

類和物件-物件特性-建構函式和解構函式

  • 物件的初始化和清理(強制要求)

點選檢視程式碼
#include<iostream>
#include<string>

using namespace std;

//物件的初始化和清理
class Person
{
public:
	//1、建構函式
	//沒有返回值 也不用寫void
	//函式名與類名相同
	//建構函式可以有引數,可以發生過載
	//建立物件的時候,建構函式會 自動呼叫,而且只調用一次
	Person()
	{
		cout << "Person 建構函式的呼叫" << endl;
	}

	//2、解構函式 進行清理操作
	//沒有返回值不寫void
	//函式名和類名相同在名稱 前加~
	//解構函式 不可以有引數的,不可以發生過載
	//物件在銷燬前會 自動呼叫解構函式,而且只會呼叫一次
	~Person()
	{
		cout << "Person 解構函式的呼叫" << endl;
	}
};

//構造和析構都是必須有的實現,如果我們自己不提供,編譯器會提供一個空實現的構造和析構
void test01()
{
	Person p1; //區域性變數,在棧上的資料,test01()執行完畢後,釋放這個物件
}

int main(){

	test01();

	system("pause");

	return 0;
}
  • 當物件建立在main函式中,只有當main函式執行完畢之後才釋放物件,編譯器呼叫解構函式
點選檢視程式碼
#include<iostream>
#include<string>

using namespace std;

//物件的初始化和清理
class Person
{
public:
	//1、建構函式
	//沒有返回值 也不用寫void
	//函式名與類名相同
	//建構函式可以有引數,可以發生過載
	//建立物件的時候,建構函式會 自動呼叫,而且只調用一次
	Person()
	{
		cout << "Person 建構函式的呼叫" << endl;
	}

	//2、解構函式 進行清理操作
	//沒有返回值不寫void
	//函式名和類名相同在名稱 前加~
	//解構函式 不可以有引數的,不可以發生過載
	//物件在銷燬前會 自動呼叫解構函式,而且只會呼叫一次
	~Person()
	{
		cout << "Person 解構函式的呼叫" << endl;
	}
};

//構造和析構都是必須有的實現,如果我們自己不提供,編譯器會提供一個空實現的構造和析構
void test01()
{
	Person p1; //區域性變數,在棧上的資料,test01()執行完畢後,釋放這個物件
}

int main(){

	//test01();
	Person p2;

	system("pause");

	return 0;
}