C++具有虚函数,其中调用虚函数将在运行时在vtable中查找函数地址。
C++也有虚拟的基础。访问虚拟库的数据成员将在运行时查找vtable的偏移量。
为什么C++缺少虚拟数据成员?访问一个将在vtable中查找与虚拟基相同的偏移量,但数据成员将由派生的
virtual void fun();
virtual int val;
void fun() override;
int val override;发布于 2021-02-18 11:41:28
你所说的偏移是一个实现细节。
虚函数的内容可以在派生实例中更改。
非虚拟数据成员的内容可以在派生实例中更改。
菱形继承意义上的共享数据成员可以通过虚拟继承实现。
多态成员可以用虚拟访问器实现。
这充其量是语法上的糖,而且不是很多。
https://stackoverflow.com/questions/66253178
复制相似问题