直接抛结论:编译器将成员变量和成员函数分开存储,不同对象的成员变量都会存储在内存中,而成员函数只会存储一份(让所有对象共享),所以对象的大小实际上即使成员变量的大小,与成员函数无关。而对象中同样存在内存对齐,这与结构体类似。
以下为例:创建的Student stu对象的大小为12字节(内存对齐)
class Student{
private:
char m_name;
int m_age;
float m_score
}
在所有函数之外(包括main函数)创建的对象是全局对象,它和全局变量类似,位于内存分区中的全局数据区
在函数内部创建的对象是局部对象,它和局部变量类似,位于栈区