# **定义**
* 以波浪号"~"为首字符,后面跟类名构成的名字为函数名的成员函数称为类的析构函数.
* 析构函数声明:
~~~
~类名();
~~~
* 析构函数定义:
~~~
~类名()
{
语句序列
}
~~~
# **作用**
* 析构函数在对象生存期结束时由系统自动调用,完成对象被清除前的一些清理工作.
# **特点**
* **不能有任何返回类型**,也不能带有任何参数,因此,析构函数不能重载.
* 如果没有为一个类定义析构函数,编译器会为该类自动产生一个缺省析构函数.
## **例子**
~~~
#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 类模板
- 第四章 运算符重载
- 数据类型转换
- 运算符重载
- 重载流插入运算符和流提取运算符
- 第五章 继承与派生
- 继承与派生
- 第六章 多态性与虚函数
- 多态性
- 虚函数
- 纯虚函数与抽象类