美文网首页
Boolan----C++对象模型(Object Model)

Boolan----C++对象模型(Object Model)

作者: 091d4be0476b | 来源:发表于2017-05-18 21:38 被阅读0次

    * 虚指针(vptr):用于指向类中的虚函数所在的虚函数列表(vtbl),不管一共有几个虚函数,其在内存中所占的内存仅为一根虚指针的大小;与之相对,普通函数在雷的对象的内存中不占据内存空间。

    * 假设p为指向包含虚函数表的对象的指针,则p对虚函数的调用即可写为:

    其中p为this指针

    * 静态绑定:汇编语言转化之后直接指出函数地址,即call ***

    * 动态绑定的限定条件:(1)通过对象指针调用该虚函数

    (2)该指针具有向上转型能力,

    (3)调用的对象为虚函数

    * 动态绑定:所点调用的虚函数具体不能被提前确定,需要看指针所指向的对象

    * this指针:该指针的一般用法:先打好框架,留下父类的虚函数的接口,其中父类的函数M调用了该虚函数;然后将框架交给他人使用,他人使用框架时写出继承的类,并且实现了该虚函数接口,再通过子类去调用父类的函数M,此时M会根据指针的来源选择执行不同的虚函数

    * this指针通常结合虚函数使用

    * Dynamic Binding:主要体现在汇编语言

    * 再谈const:

    (1)成员函数 + const:用于告诉编译器该函数

    (2)const + object:不会改变该对象

    (3)常量对象不能调用非常量函数,否则jj

    (4)const算作签名的一部分

    * new: 其实是一个表达式,而不是运算符

    重载方式:static void* operator new(size_t size)

    * delete:其实是一个表达式,而不是运算符

    重载方式:static void* operator delete(void*, size_t size)

    相关文章

      网友评论

          本文标题:Boolan----C++对象模型(Object Model)

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