- #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, int age1, float score1):name(name1), age(age1), score(score1){}
- Student::~Student(){
- cout<<name<<"再见"<<endl;
- }
- void Student::say(){
- cout<<name<<"的年龄是 "<<age<<",成绩是 "<<score<<endl;
- }
- int main(){
- Student stu1("小明", 15, 90.5f);
- stu1.say();
- Student stu2("李磊", 16, 95);
- stu2.say();
- Student stu3("王爽", 16, 80.5f);
- stu3.say();
- cout<<"main 函数即将运行结束"<<endl;
- return 0;
- }
析构函数的执行顺序为什么是反的,请看阅读下节《深入内存模型和函数调用机制,理解析构函数的执行顺序》。析构函数在对象被销毁前执行;要知道析构函数什么时候被调用,就要先知道对象什么时候被销毁。
如果你对 auto、static、extern 等关键字不理解,请猛击:C语言动态内存分配及变量存储类别注意:析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以分配给新对象使用。
原文:http://www.cnblogs.com/vijozsoft/p/5099051.html