对于虚拟机制,我们需要在基类和派生类中具有相同的方法名称。然而,在虚拟析构函数的情况下,名称可以不同。
任何人都可以解释虚拟机制(V-Ptr,V-Table)如何支持/使用不同命名的析构函数。
对于虚拟机制,我们需要在基类和派生类中具有相同的方法名称。然而,在虚拟析构函数的情况下,名称可以不同。
任何人都可以解释虚拟机制(V-Ptr,V-Table)如何支持/使用不同命名的析构函数。
virtual
析构函数的处理方式与虚函数不同。当一个对象被销毁时,继承链中的所有析构函数都会被调用,与方法相反,在调用时只调用最派生类中的覆盖。
virtual
析构函数本质上与非虚拟析构函数相同,除了如果要通过指向基类的指针删除对象时它必须存在(否则它是未定义的行为)这一事实。
一个类只能有一个析构函数,因此名称不需要相同 - 您不必使用名称来标识哪个析构函数,因为每个类只有一个析构函数。
这取决于实现,只要它确保它可以调用正确的析构函数即可。这样做的方法可以是通用虚拟机制的一部分,也可以是仅用于析构函数的特殊机制。
人们会期望函数名称无论如何都不会出现在 vtables 中:编译器只是为每个类中的每个虚函数分配一个偏移量到表中。因此,析构函数是否有名称以及它们是什么的问题无关紧要。