c++ - Virtual destructor和Vtable之间有什么关系吗

标签 c++ virtual vtable

如果我们编写虚函数,它会在该类的对象中添加一个虚表。虚拟析构函数也是如此吗? vtable是用来实现析构函数虚化的吗

最佳答案

是的。当通过基类指针删除对象时,需要一些信息来允许调用正确的析构函数。该信息是小整数索引还是指针并不重要(尽管动态链接可能暗示它是一个指针)。自然地,该信息需要与指向的对象相邻(在内部)。

将任何类型的虚方法(包括析构函数)添加到以前没有的类中,都会增加 sizeof(class)。

关于c++ - Virtual destructor和Vtable之间有什么关系吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436617/

相关文章:

C++ 虚拟析构函数和 vtable

c++ - libjpeg/libjpeg-turbo RGBA/32位int解压缩

c++ - 在 ubuntu 上构建 32 位应用程序并使用 64 位库运行它

scala - 成员函数默认为虚函数

c++ - 从基类调用派生类函数

c++ - Qt/C++ : Centralise parameters in one class

c++ - 为什么这个实现的二分搜索比 std::binary_search() 慢得多?

c++ - 如何将一个 "unknown"的派生类声明为基类的成员,并允许派生版本的成员函数被调用?

c++ - 带 CMake 的 Qt5 - AUTOMOC 开启时 vtable 错误