美文网首页
C++面向对象高级编程(下) Week 2 (Boolan) b

C++面向对象高级编程(下) Week 2 (Boolan) b

作者: Im4lish | 来源:发表于2017-08-10 20:43 被阅读0次

    1-对象模型:关于vptr和vtbl
    无论类中有多少个虚函数,只有一个vptr,vptr指向vtbl,vtbl不占用对象空间。
    vtbl可视为一个数组,vtbl中储存着虚函数的指针。
    2-对象模型:关于this
    this指针是每个成员函数的隐藏参数。
    3-对象模型:关于Dynamic Binding
    pa->vfunc1()等价于(*(p->vptr)[n])(p)或者(* p->vptr[n])(p)
    4-谈谈const
    1、const member function

    return_type funcname cosnt (parameters)
    {
          //保证不修改成员变量
          //在某些情况下,若return_type为引用且返回的为成员变量,则可能导致成员变量,使得const修饰符失效
    }
    

    2、const object

    const object与const member function
    当函数的const与non-const版本同时存在时,const object只会调用const版本,non-const object只会调用non-const版本
    5-关于New,Delete
    Xxx* x = new Xxx()中的new为表达式,其不可改变,而对new的重载,则是该表达式经编译器转化为
    void* mem = operator new(sizeof(Xxx));
    x = static_cast<Xxx*>mem;
    x->Xxx::Xxx();
    

    中的operator new。delete与new相似。
    new操作符在C++中,实际上是通过malloc函数来实现。delete操作符则是通过free函数实现。
    6-重载Operator new,Operator delete
    size_z是在重载new操作符时所规定的第一个参数,不必传入,是重载函数的规定。
    7-示例
    8-重载new[],delete[]示例
    9-Basic_String使用new(extra)扩充申请量

    相关文章

      网友评论

          本文标题:C++面向对象高级编程(下) Week 2 (Boolan) b

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