# **定義**
* 以波浪號"~"為首字符,后面跟類名構成的名字為函數名的成員函數稱為類的析構函數.
* 析構函數聲明:
~~~
~類名();
~~~
* 析構函數定義:
~~~
~類名()
{
語句序列
}
~~~
# **作用**
* 析構函數在對象生存期結束時由系統自動調用,完成對象被清除前的一些清理工作.
# **特點**
* **不能有任何返回類型**,也不能帶有任何參數,因此,析構函數不能重載.
* 如果沒有為一個類定義析構函數,編譯器會為該類自動產生一個缺省析構函數.
## **例子**
~~~
#include<string>
#include<iostream>
using namespace std;
class Student ? ? ? ? ? ? ? ? ? ? //聲明Student類
{
public:
? student(int n,string nam,char s )//構造函數
? ? ? {
? ? ? num=n;
? ? ? ? ? name=nam;
? ? ? ? ? sex=s;
? ? ? ? ? cout<<″Constructor called.″<<endl; ? ? ? ? //輸出有關信息 ? ? ? ? ? ?
? ? ? }
? ? ? ~Student( ) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義析構函數
? ? ? {
? ? ? cout<<″Destructor called.″<<endl; ? ? ? //輸出有關信息
? ? ? } ? ? ?
? ? ? void display( ) ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義成員函數
? ? ? {
? ? ? cout<<″num: ″<<num<<endl;
? ? ? ? ? cout<<″name: ″<<name<<endl;
? ? ? ? ? cout<<″sex: ″<<sex<<endl<<endl;
? ? ? }
? private:
? int num;
? char name[10];
? char sex;
};
?
int main( )
{
Student stud1(10010,″Wang_li″,′f′); ? ? //建立對象stud1
? stud1.display( ); ? ? ? ? ? ? ? ? ? ? ? //輸出學生1的數據 ?
? Student stud2(10011,″Zhang_fun″,′m′); ? //建立對象stud2
? stud2.display( ); ? ? ? ? ? ? ? ? ? ? //輸出學生2的數據
? return 0;
}
~~~
- 介紹
- 編程設計語言
- 第一章 對C++的初步認識
- 1.2 最簡單的C++程序
- 1.3 C++對C的補充
- 1.3.1 return
- 1.3.2 輸入輸出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定義常變量
- 1.3.5 函數原型聲明
- 1.3.6 內置函數
- 1.3.7 函數重載
- 1.3.8 函數模板
- 1.3.9 有默認值的參數
- 1.3.10 作用域
- 1.3.11 const修飾指針
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 變量
- 1.3.15 字符串變量
- 第二章 類與對象
- 2.2 類的聲明和對象的定義
- 2.3 類的成員函數
- 第三章 關于類和對象的進一步討論
- 3.1 構造函數
- 3.1.1 對象的初始化
- 3.1.2 構造函數
- 3.2 析構函數
- 3.3調用析構函數和構造函數的順序
- 3.4 對象數組
- 3.5 對象指針
- 3.6 共享數據的保護
- 3.7 對象的建立與釋放
- 3.8 對象的賦值與復制
- 3.9 靜態成員
- 3.10 友元
- 3.11 類模板
- 第四章 運算符重載
- 數據類型轉換
- 運算符重載
- 重載流插入運算符和流提取運算符
- 第五章 繼承與派生
- 繼承與派生
- 第六章 多態性與虛函數
- 多態性
- 虛函數
- 純虛函數與抽象類