c++析构函数作用域

来源:互联网 发布:皇甫圣华的淘宝店 编辑:程序博客网 时间:2024/06/16 13:59


析构函数与构造函数一般是同一个话题。构造函数与析构函数的执行顺序刚刚好相反。在类里面的继承关系更为之显著。

 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 语句最近的那个  对象是最后才入栈的,先进后出。所以他是最先进行析构的;(讲了这么多呢要讲的就是这个,其它的具体规则都可以在网上搜索到,所以我说的只是这个思想)


1 0
原创粉丝点击