C++析構函數

作用:
創建對象時系統會自動調用構造函數進行初始化工作,同樣,銷燬對象時系統也會自動調用一個函數來進行清理工作(例如回收創建對象時消耗的各種資源),這個函數被稱爲析構函數。
析構函數(Destructor)也是一種特殊的成員函數,沒有返回值,不需要用戶調用,而是在銷燬對象時自動執行。與構造函數不同的是,析構函數的名字是在類名前面加一個”~“符號。

特點:

析構函數的作用並不是刪除對象,而是在撤銷對象佔用的內存之前完成一些清理工作,使這部分內存可以被程序分配給新對象使用。析構函數不返回任何值,沒有函數類型,也沒有函數參數。因此它不能被重載。一個類可以有多個構造函數,但只能有一個析構函數。當然,析構函數也可被用來執行“用戶希望在最後一次使用對象之後所執行的任何操作”,例如輸出有關的信息。如果用戶沒有定義析構函數,C++編譯系統會自動生成一個析構函數,實際上什麼操作都不進行。
在一般情況下,調用析構函數的次序正好與調用構造函數的次序相反:最先被調用的構造函數,其對應的(同一對象中的)析構函數最後被調用,而最後被調用的構造函數,其對應的析構函數最先被調用



例子:
#include<iostream>
using namespace std;

class Student{
private:
char *name;
int age;
float score;
public:
Student(char *, int, float); //構造函數
~Student(); //析構函數
void say(); //普通成員函數
};

Student::Student(char*name1,intage1,floatscore1):name(name1),age(age1),score(score1){};

Student::~Student()
{
cout<<"再見"<<endl;
}

void Student::say()
{
count<<name<<"年齡是"<<age<<"成績是"<<score<<endl;
}

int main()
{
Student stu1("小明",15,90.5f);
stu1.say();

Student stu2("李磊",15,90.5f);
stu2.say();

Student stu3("王爽",15,90.5f);
stu3.say();

cout<<"main函數即將運行結束"<<endl;

return 0;
}

運行結果:
小明的年齡是 15,成績是 90.5
李磊的年齡是 16,成績是 95
王爽的年齡是 16,成績是 80.5
main 函數即將運行結束
王爽再見
李磊再見
小明再見
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章