美文网首页
Boolan C++面向对象高级编程(下) 第二周笔记 暗影行者

Boolan C++面向对象高级编程(下) 第二周笔记 暗影行者

作者: hongXkeX | 来源:发表于2017-05-09 22:19 被阅读14次

    C++面向对象高级编程(下)

    第二周结构框图:

    17.对象模型(Object Model):关于vptr和vtbl
    18.对象模型(Object Model):关于this
    19.对象模型(Object Model):关于Dynamic Binding
    20.谈谈const
    21.关于new,delete
    22.重载 ::operator new,::operator delete
           ::operator new[],::operator delete[]
    23.示例
    24.重载new().delete()
    25.basic_string使用new(extra)扩充申请量
    

    注:部分笔记写在打印出的课件上

    此节课先复习了下构造和析构:
    1


    这里写图片描述

    2


    这里写图片描述
    3
    这里写图片描述

    17.对象模型(Object Model):关于vptr和vtbl:


    这里写图片描述
    1.类中有虚函数会生成如0x409004地址
    2.虚表vtbl放虚函数的地址
    3.继承也会继承函数,但不应从内存角度理解,继承的是函数调用权。
    
    这里写图片描述

    C++编译器看到一个函数调用实行动态绑定三条件:

     1.必须通过指针调用
     2.指针为向上的关系(保证安全)
     3.调用的是虚函数
    

    18.对象模型(Object Model):关于this:


    这里写图片描述
    由于动态绑定流程才会如图上乱跑
    

    19.对象模型(Object Model):关于Dynamic Binding:


    这里写图片描述
    侯老师主要从汇编角度讲解了下动态绑定实现三条件
    

    20.谈谈const:

    const若修饰成员函数,即要求成员函数不能改变class data的值
    
    这里写图片描述
    常量对象不能调用非常量函数(编译器会报错)
    

    21.关于new,delete:


    这里写图片描述
    此处复习前面所讲的
    1.new:先分配memory,再调用ctor
    2.delete:先调用dtor,再释放memory
    3.array new一定要搭配array delete
    

    22.重载 ::operator new,::operator delete:


    这里写图片描述 这里写图片描述
    这里optional可有可无
    
    这里写图片描述

    23.示例:


    这里写图片描述
    当一个对象有虚函数,其就多一个指针,内存大小多4
    

    24.重载new().delete()


    这里写图片描述
    只有当new所调用的ctor抛出exception,才会调用这些重载版的operator delete()
    

    25.basic_string使用new(extra)扩充申请量


    这里写图片描述

    相关文章

      网友评论

          本文标题:Boolan C++面向对象高级编程(下) 第二周笔记 暗影行者

          本文链接:https://www.haomeiwen.com/subject/ulnitxtx.html