![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
1. 对象简介
文章平均质量分 94
深度搜索c++对象模型第一章
白茶.清欢
白茶清欢无别事,我在等风也等你。
展开
-
1.3 c++虚基类的用途以及内存模型
如果派生类继承了多个基类,基类有虚基类和非虚基类,那么在创建该派生类的对象时,先调用虚基类的构造函数,然后调用非虚基类的构造函数,最后调用派生类的构造函数。都会多产生一个虚基表指针,指向一个虚基表。此虚基表的作用是记录基类的数据在子类内存中存储位置(距离子类起始位置的偏移量),同时在虚基表的第一项也存储了基类虚基表指针距离此基类起始位置的偏移量。可以看到,为了实现虚继承,必须定义相应的虚继承表用于指向虚基类在继承类中的偏移量,虚基类表与虚基类指针的设定都是在编译阶段由编译器生成相应的默认构造函数完成的。原创 2022-11-22 23:03:19 · 872 阅读 · 1 评论 -
1.2 C++编译器对指针的解释方式(深度理解c++指针)
当一个父类对象被直接赋值为一个子类时,子类对象内部的值会被切割,以塞入到父类对象内存中,只保留父类相应的数据成员。同时子类的虚表指针也不会被直接初始化,父类虚表指针的值会由编译器直接指定。所以直接赋值后,子类的任何特征都不在基类中了,因此多态也不在呈现。同时,如果一个编译器比较优秀,当基类对象直接调用虚函数时例如。原创 2022-11-22 22:54:05 · 831 阅读 · 1 评论