在c++中,如果一个派生类没有重写基类中对应的虚函数,那么在派生类的构造函数中依然会创建虚指针,但是该虚指针指向的是基类的虚表。
#include <iostream>
#include <string>
class Base {
public:
virtual void foo() {
std::cout << "Base::foo" << std::endl;
}
};
class Derived : public Base {
};
int main() {
Base b;
Derived d;
std::cout << "sizeof(b)=" << sizeof(b) << std::endl;
std::cout << "sizeof(d)=" << sizeof(d) << std::endl;
return 0;
}
在X64下结果如下:

在线编译运行工具:C++ Shell
本文通过一个简单的C++示例介绍了派生类未重写基类虚函数时的行为。具体而言,即使派生类没有重写虚函数,其对象也会包含一个虚指针,该虚指针默认指向基类的虚函数表。

被折叠的 条评论
为什么被折叠?



