c++虚函数和纯虚函数的存储空间
时间: 2023-09-14 14:03:58 浏览: 114
C++ 类中有虚函数(虚函数表)时 内存分布详解
C++中的虚函数和纯虚函数都会在类的虚函数表中存储。在含有虚函数的类中,编译器会在该类的对象中分配一个指向虚函数表的指针,这个指针被称为虚表指针(vptr)。当调用一个虚函数时,编译器会使用该对象的虚表指针去查找虚函数表中对应的函数地址并调用。
虚函数在虚函数表中有一个实际的函数指针,而纯虚函数没有实际的函数实现,只有函数声明,因此在虚函数表中会存储一个空指针作为纯虚函数的地址。
因此,虚函数和纯虚函数在编译时都会被分配到类的虚函数表中,不会占用对象的存储空间。虚表指针会占用对象的存储空间,但是它只会被分配一次,即使创建多个类的对象,也只有一个虚表指针。
阅读全文