C++析构函数

来源:互联网 发布:社会与经济统计数据库 编辑:程序博客网 时间:2024/05/18 00:56
作用:
创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作(例如回收创建对象时消耗的各种资源),这个函数被称为析构函数。
析构函数(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 函数即将运行结束
王爽再见
李磊再见
小明再见
1 0
原创粉丝点击