摘要:
一、C++对象内存模型认知模式 二、C++类数据成员内存模型 <1>无继承情况 <2>单继承与多重继承的情况 <3>虚继承 观点: <a>非静态数据成员在类实例内存中在内存中连续存储; <b>静态数据成员不占类实例内存; <c>一个子类的内存模型可以看成就是父类的各数据成员与自己新添加的数据成员的总和; <d>虚拟继承中,关于对象的数据成员内存布局问题有多种策略,自己注意测试;三、C++类函数成员的内存模型 相关概念:C++的指针类型 指针类型中包含了一个类似于sizeof的信息,或者其他的辅助信息,个size 阅读全文
摘要:
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。1.基本认识 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的,简称为V-Table,在这个表中,主是要一个类的虚函数的地址表。C++的编译器应该是保证虚函数表的指针存在于对象实例中最.. 阅读全文