析構(gòu)函數(shù)是在對象銷毀時(shí)被調(diào)用的函數(shù),當(dāng)實(shí)例化一個(gè)對象時(shí)占用的資源需要程序員手動(dòng)回收時(shí),一般用來釋放資源。析構(gòu)函數(shù)的定義格式:~類名(){}。析構(gòu)函數(shù)沒有任何參數(shù)。
//文件名為Student.h#include <iostream>#include <string>using namespace std;class Student {public: Student(); Student(const Student &stu); ~Student();//析構(gòu)函數(shù),對象被銷毀時(shí)會(huì)自動(dòng)調(diào)用PRivate: char *m_pName;};#include "Student.h"Student::Student() { m_pName = new char[20];//從堆中申請的內(nèi)存,需要手動(dòng)回收}Student::Student(const Student &stu) { cout << "調(diào)用拷貝構(gòu)造函數(shù)" << endl;}Student::~Student() { delete m_pName;//釋放對象占用的內(nèi)存 m_pName = NULL; cout << "我要死啦!" << endl;//函數(shù)體}/*作為函數(shù)參數(shù)傳遞過來的對象實(shí)際上生成了一個(gè)對象的副本(利用拷貝構(gòu)造函數(shù)),當(dāng)函數(shù)執(zhí)行完畢后,這個(gè)對象的副本會(huì)被銷毀,這時(shí)也會(huì)調(diào)用析構(gòu)函數(shù)*/void test(Student stu) {}int main() { Student stu1; Student stu2 = stu1; Student stu3(stu1); test(stu1); system("pause"); return 0; //這里并沒有調(diào)用析構(gòu)函數(shù),但是程序執(zhí)行完畢時(shí)系統(tǒng)會(huì)自動(dòng)調(diào)用}新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注