MST

星途 面试题库

面试题:C++ 中空类大小相关问题

在C++ 中,一个空类默认大小是多少?为什么会是这个大小?如果在空类中添加一个虚函数,类的大小又会如何变化,原因是什么?
40.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 空类默认大小
    • 空类默认大小是1字节。
    • 原因是:C++ 要求每个对象都必须有独一无二的地址。如果空类大小为0,那么多个空类对象的地址将相同,这不符合C++ 的内存模型规则。所以编译器会为其分配1字节,以确保每个空类对象都有唯一的内存地址。
  2. 添加虚函数后类大小的变化
    • 当在空类中添加一个虚函数时,类的大小会变为4字节(在32位系统下)或8字节(在64位系统下)。
    • 原因是:当类中包含虚函数时,编译器会为该类生成一个虚函数表(vtable),并在每个对象中添加一个指向虚函数表的指针(vptr)。在32位系统下,指针大小为4字节;在64位系统下,指针大小为8字节,所以类的大小相应变为4字节(32位系统)或8字节(64位系统)。