2018-01-26

Boolan 第五周 高级oop下

vptr:虚指针指向虚表,若类中含有虚函数,不论数量,则类的空间内含有一个指向虚表的指针。

vtbl:虚表,表内存放指向虚函数的指针。

示例:

若需要使用容器存放不同子类的元素,可以将元素的地址以父类指针形式存放在容器内。

函数的动态绑定(dynamic binding):ptr指向不同类,调用不同的函数。

动态绑定实现条件:1、通过指针调用;2、up-cast;3、调用虚函数

静态绑定


动态绑定

模板方法的实现原理:

对象及函数const使用矩阵:

☆当成员函数的const和non-const版本同时存在时,const object只能调用const版本,non-const object智能调用non-const版本。

重载new&delete作用:管理内存。

重载new&delete分为:全局重载和类内重载。

全局重载示例:

类内重载示例:

重载new&delete
重载new[]&[]delete

重载new()、dellete():可以手动写任意数量的重载函数,但是参数列表必须不同,第一个参数必须为size_t类型,其余以new指定的

placement argument为初值。例:Foo* pf=new(300,'c')Foo;

重载delete()说明:正常情况下不会被调用,仅当程序在ctor时发生异常(throw exception)时会被调用,若不写编译也不会报错,代表不在乎这个异常。

重载placement  new实现额外空间的申请示例:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容