面试题答案
一键面试- 类对象在内存中的布局:
- 对于类
A
,其对象在内存中包含非静态成员变量。这里非静态成员变量有int a
(通常占4字节,具体取决于系统和编译器设置)和char b
(占1字节)。由于内存对齐的原因,A
类对象大小至少为8字节(假设int
占4字节,char
占1字节,为了对齐到4字节边界,b
后会填充3字节)。
- 对于类
- 静态成员变量:
- 静态成员变量(如
static int c
)不包含在类对象的内存布局中。它们存储在全局数据区(静态存储区),与类的实例无关。所有类对象共享同一个静态成员变量的实例。
- 静态成员变量(如
- 成员函数:
- 成员函数(如
void func()
)同样不包含在类对象的内存布局中。成员函数代码存储在代码区(也叫文本段)。普通成员函数可以访问类的非静态成员变量,通过对象的指针(this
指针)来区分不同对象的成员变量。而静态成员函数只能访问静态成员变量,因为它不依赖于任何类对象实例,没有this
指针。
- 成员函数(如