C++继承关系中,子类虚函数表是怎么分布的,子类的内存是又那些组成
这个应该没规定吧。一般vc虚函数表首地址在最前,然后从基类开始到子类,但应该是各个编译器可以自己决定
参考:https://blog.csdn.net/weixin_45758146/article/details/108363744
但是,当动态申请的对象,如果给了父类指针管理析构函数是否需要是虚函数呢?
下图注释了new 和 delete的调用原理:
由上图可知父类指针管理子类的情况下,析构函数调用的都是父类的析构函数。
如果想要调用子类的析构函数的话,该怎么实现呢?
参考多态的构成条件,第一条满足(通过基类的指针或者引用调用虚函数)
第二条未满足(函数并不是虚函数)
因此只需在析构函数前加virtual即满足了多态构成的所有条件。
给出结论: