带有虚函数的类占用更多空间
class with virtual functions takes more space
有这样的代码:
#include <iostream>
class A{
int a;
int fun(){}
};
class B{
int a;
virtual int fun(){}
};
int main()
{
std::cout << sizeof(A) << " " << sizeof(B) << std::endl;
std::cin.get();
return 0;
}
输出为:
4 8
为什么B类比A类大4字节?
任何带有虚函数的类都需要一个指向该类虚函数表的指针。因此,存在一个隐藏成员,即指针的大小。
http://en.wikipedia.org/wiki/Virtual_method_table相关文章:
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- CUDA内核和数学函数的显式命名空间
- 在命名空间中使用全局命名空间中的函数
- 是否可以将函数导入命名空间,但不能导出它?
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 是否有 Windows 用户空间函数来枚举连接的网络共享?
- 使用类指针重载C++命名空间函数模板专用化替代方法?
- 在头文件中添加命名空间函数
- 命名空间函数的多重定义
- 在多个 cpp 文件中重用未命名的命名空间函数
- Ubuntu,如何找到内核工作繁重的程序热点?似乎kernel.kallsyms上的函数没有标记为用户空间函数的子级
- 如何正确声明命名空间函数
- 使用 libclang 解析命名空间函数
- C++命名空间函数
- 内联命名空间函数时出错
- 递归std::functional与递归匿名命名空间函数.使用哪一个
- c++ Koenig(参数依赖)查找:如果不同名称空间中的两个名称空间函数具有相同的参数类型该怎么办?
- 名称空间函数定义中的这种所谓查找是什么
- 如何在命名空间函数中使用pragma weak