zoukankan      html  css  js  c++  java
  • C++温故而知新(二)

    在初步了解到前面的关于类的第一个函数构造函数之后。关于构造函数的权限和使用方法,作用之后,在这里接下来研究C++的第二个特色

    那就是虚函数,研究虚函数的作用、内存中分分配状态、继承、安全性等一系列的问题,我们将这些问题一个一个分解开来

    1.虚函数作用

       C++中加入虚函数,是由于多态泛型变成的考虑,函数的重载和虚函数是实现多态的主要途径,实现晚绑定机制,在编译的时候不知道会调用哪个

      直到运行的时候才加载正确的地址

    2.含有虚函数类的内存大小和位置

        如果有虚表指针,那么地址应该和对象地址是一致的 

        如果有虚函数:内存大小=成员变量内存大小+padding大小+虚表个数*4字节(pS:如果从两个类继承,父类中都有虚函数,那么就有2个虚表指针,子类中的虚函数放在第一个表中)

         想想前面的构造函数的功能,其中也包括创建虚表指针 VPTR VTBL

         如果没有虚函数:内存大小=成员变量内存大小+padding大小

    3.虚函数的安全性

         谈到这个问题,父类的指针对象一般不能访问子类的没有覆盖的虚函数,但是通过虚表这种机制,又是赤裸裸的将子类的虚函数给拿到手了,这是由背与C++语法的

    4.虚函数的缺点

        暂用额外内存和运行时间

    详细参考

    http://blog.csdn.net/haoel/article/details/1948051

    http://blog.csdn.net/hackbuteer1/article/details/7883531

  • 相关阅读:
    目录 —— C语言数据结构与算法分析
    目录 —— STM32裸机
    目录 —— FreeRTOS
    常用存储器介绍
    DMA(Data Memory Access)直接存储器访问
    命令
    文件数据流向
    野指针产生的原因
    内存四区
    SVG 是什么?
  • 原文地址:https://www.cnblogs.com/OneDream/p/3367919.html
Copyright © 2011-2022 走看看