【发布时间】:2019-07-29 15:27:12
【问题描述】:
在对象切片中,当派生类对象被复制到基类对象时,派生类的_vptr是否也像Base类的其他成员一样被复制到基类的_vptr?如果不是,为什么?
class Base{
public :
virtual void Display(){cout<<"In Base"<<endl;}
};
class Derived:public Base{
public:
void Display(){cout<<"In Derived"<<endl;}
};
int main()
{
Derived objD;
Base objB;
objB = objD;
objB.Display();
}
我观察到上述 sn-p 的结果如下。
Output
In Base
【问题讨论】:
-
vptr 是一个实现细节。语义不是用 vtable 和 vptr 来指定的。
标签: c++ vtable object-slicing vptr