析構函數
觸發條件:當對象被銷毀時,會自動調用析構函數,釋放資源。
定義格式:~類名()(沒有返回值,不允許加任何參數,故不能重載)
構造函數在對象實例化時自動調用,
析構函數在對象銷毀時自動調用。

構造函數沒有返回值。
拷貝構造函數沒有返回值、不能重載。
析構函數在棧、堆中都能被調用,但是在堆中不會自動調用,必須手動釋放內存,否則會造成內存泄漏

類{命名空間;成員函數;數據成員;}數據成員{普通數據成員;string;const成員;靜態數據成員;對象成員;}成員函數{屬性封裝函數;一般功能函數;特殊函數{構造函數{拷貝構造函數;默認構造函數};析構函數}}成員函數{參數默認值;函數重載;引用;const;}對象實例化{堆中實例化;戰中實例化;}
Teacher.h
#include<string>#include<iostream>using namespace std;class Teacher{public: Teacher(string _name="q",int _age=25,int _m=100); Teacher(const Teacher &tea); ~Teacher(); void test(Teacher t); void teach(); void setName(string _name); string getName(); void setGender(string _gender); string getGender(); void setAge(int _age); int getAge(); int getMax();PRivate: string m_strName; string m_strGender; int m_iAge; const int m_iMax;};Teacher.cpp
#include"Teacher.h"using namespace std;/*定義一個Teacher類: 1.自定義析構函數 2.普通方法實例化的對象,在銷毀對象時是否自動調用析構函數 3.通過拷貝構造函數實例化對象,在銷毀對象時是否自動調用析構函數數據成員: 名字 性別 年齡成員函數: 數據成員的封裝函數 授課teach另: 定義可以帶最多學生的個數,此為常量*/Teacher::Teacher(string _name,int _age,int _m):m_strName("jim"),m_iAge(10),m_iMax(100){ cout<<"Teacher(string _name,int _age,int _m)"<<endl;}Teacher::Teacher(const Teacher &tea):m_strName("jim"),m_iAge(10),m_iMax(100){ cout<<"Teacher(const Teacher &tea)"<<endl;}Teacher::~Teacher(){ cout<<"~Teacher()"<<endl;}void test(Teacher){}void Teacher::teach(){ cout<<"現在上課"<<endl;}void Teacher::setName(string _name){ m_strName=_name;}string Teacher::getName(){ return m_strName;}void Teacher::setGender(string _gender){ m_strGender=_gender;}string Teacher::getGender(){ return m_strGender;}void Teacher::setAge(int _age){ m_iAge=_age;}int Teacher::getAge(){ return m_iAge;}int Teacher::getMax(){ return m_iMax;}int main(){ Teacher t1; Teacher t2=t1; Teacher t3(t1); test(t1); Teacher *p=new Teacher(); delete p; return 0;}Teacher(string _name,int _age,int _m)Teacher(const Teacher &tea)Teacher(const Teacher &tea)Teacher(const Teacher &tea)~Teacher()Teacher(string _name,int _age,int _m)~Teacher()~Teacher()~Teacher()~Teacher()
新聞熱點
疑難解答
圖片精選