成员函数和成员变量分开存储
只有非静态成员变量才属于对象上。
每个空对象占用的内存空间为:1。c++编译器会给每个空对象也分配一个内存空间,是为了区分空对象占内存的位置。每个空对象应该有一个独一无二的空间。
函数也不会占用对象空间,所有对象共享一个函数实例。
#include<iostream> using namespace std; class Person { public: int m_a; }; class Person1 { public: int m_a; static int m_b; }; void test() { Person p; Person1 p1; cout << sizeof(p) << endl; cout << sizeof(p1) << endl; } int main() { test(); system("pause"); return 0; }
此时输出:
1
4
4
说明了:空对象也是有1字节的空间。静态成员变量并不属于特定的某一个对象,同理,静态成员函数也不属于某一个对象。进一步来说:所有对象共享一个成员函数实例。