析构函数与构造函数一般是同一个话题。构造函数与析构函数的执行顺序刚刚好相反。在类里面的继承关系更为之显著。
class Studnet{
Student(int s,int n){...}
~Student(){cout<<"Student XG";}
};
class Universe:public Student{
public:
Universe(int q,int w){...}
~Universe(){cout<<"Universe XG";}
}; //构造函数的执行顺序是 基类->子类;析构函数的执行顺序是 子类—>基类;需要提醒的是这个是对于子类与基类的关系; 对于两个不相关的类的
对于c++基础,贯彻全部内容的就是 析构函数和构造函数 的执行顺序【(当然像 继承 封装 多态;还是再简单的提及一下吧,毕竟这是博文写的就是c++学习笔记)
继承 :private(私有继承),protected(保护基础),public(公有继承)
class A{ private:.........
public:.......
protected:.......};
class B:privatA{ private:.........
public:.......
protected:.......}; //基础的就不说了,说些需要注意的:无论是私有还是公有还是保护继承,基类的私有始终只是基类所特有的(即无法继承private的东西)。你继承来的只能是基类里protected,和 public 的;
public继承基类里的公有和保护的(public 继承,基类 公有的还是继承为公有的,私有的还是继承为私有的);
protected继承:基类里的public 和protected 到了 派生类 就变成 protected;
private继承:基类里的public和protected 到了派生类就成 private;
(继承是把基类的以 protected(例如) 把全部(基类的public和protected)可以继承的 继承为 (protected));
多态:说白了就是重载和虚函数(virtual)
回到正题:析构函数 和构造函数的顺序
以为后头的很多虚函数 普通函数 重载函数 。。。运算符重载 。。。。继承。。。。。
都有很多的 析构函数和构造函数的考究
记得你头疼,但是呢你知道原理之后一切就变得有趣了,有规律可循;
c++是一种编译环境 不是一门语言(这句话是一位;老师强调的,因为c++延续了很多c语言的语法,而且很多语法都可以用,是编译器里写好的一些规则,对这句话有异议的可以留言大家探讨下)
噢对了那个规律呢,就是你要知道 编译器是怎么解读 c++代码的: windows 系统的 vc++6.0 和 linux 的gcc 都是目前最流行的c++编译器,他对析构函数的存储呢
是用堆栈的形式 ;在main函数里,你生成一个对象就把析构函数入栈。等到你程序跑完,return 0;
后 就开始读取堆栈里的析构函数对对象进行析构;离return 语句最近的那个 对象是最后才入栈的,先进后出。所以他是最先进行析构的;(讲了这么多呢要讲的就是这个,其它的具体规则都可以在网上搜索到,所以我说的只是这个思想)