美文网首页
C++面向对象程序设计-Fifth Week

C++面向对象程序设计-Fifth Week

作者: Letmethinkthink | 来源:发表于2017-11-19 22:23 被阅读0次

    对象模型(Object Model):vptr 和 vtbl

    vptr和vtbl

    父类函数中定义的虚函数在子类中定义会覆盖掉父类中的函数,同时子类中会有一个虚指针指向虚表,

    虚表内包含覆盖的虚函数和没有重定义的父类函数

    C语言的写法(*(p->vptr)[n])(p));可以实现对相应路径实现对虚表中偏移量为n的函数的调用

    父类是一种子类可以这么说,反过来说会出错

    对象模型(Object Model):对象指针this

    隐藏的指向当前对象的指针

    对象模型(Object Model):Dynamic Binding

    非动态绑定指向固定的对象,无法改变

    动态绑定则是由指向的对象决定的

    三个条件:

    指针类型、虚函数、向上转型

    关于 const

    常成员对象只能调用常成员函数

    而非常成员对象则可以调用常成员函数或非常成员函数

    我的理解是常成员函数骨子里是不可改变对象中数据,不管怎么调用都不影响

    而非常成员函数如果被常成员对象调用就会矛盾,好像提前说好了的生来可以改变数据的值,现在突然说不可以改变了,会冲突

    new,delete重载

    关于构造、析构顺序,构造是从内而外,像造车;析构是从外到内,像剥皮。

    而new 和delete 的重载我觉得意义是更好的理解new 和delete的顺序和底层原理,new和delete更加灵活。

    创建对象时有虚函数会多一个虚指针的大小。

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

    Rep用来计数,表示被共享的对象的个数

    相关文章

      网友评论

          本文标题:C++面向对象程序设计-Fifth Week

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