類和物件-物件特性-建構函式和解構函式
阿新 • • 發佈:2021-07-20
- 物件的初始化和清理(強制要求)
點選檢視程式碼
#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; }