在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