我还有一些不太明白。
我声明每个类时,都会有一个指向该类虚表的隐藏vptr成员。
假设我有以下声明:
class BASE
{
virtual_table* vptr; //that's hidden of course , just stating the obvious
virtual void foo();
}
class DERIVED : public BASE
{
virtual_table* vptr; //that's hidden of course also
virtual void foo();
virtual void cho();
}
首先,我想了解一些事情,派生类和基类的vptr成员名称是否相同?
其次,在以下情况下会发生什么:
base* basic = new derived();
我明白了,基本变量获取派生类的vptr,但这是如何发生的?因为通常在进行转换时,派生类的基类部分(包括基类的vptr)应该被分配给基本变量,而不是派生类的vptr。如果两个类中有相同名称的变量,可能会有所不同,我不确定。
第三个也是最后一个问题: 当我有
base* basic = new derived();
即使它是虚函数,是否有一种调用基类成员函数的基本方法?
谢谢