在C++中,类内的成员变量和成员函数分开存储;
只有非静态成员变量才属于类的对象上(静态成员变量存储在全局区,不属于某一对象。静态成员函数和非静态成员函数也不在类的对象)。
例1:
#include<iostream>
using namespace std;
class person
{ };
int main()
{
person p;
cout << sizeof(p) << endl;
system("pause");
return 0;
}
计算类的大小,打印1字节,因为空对象占用内存1字节
原因:因为C++编译器会给每一个空对象也分配一个字节,是为了区分空对象占用内存的位置,每个空对象也应该有一个独一无二的内存地址
例2:
#include<iostream>
using namespace std;
class person
{
int m_A;
static int m_B;
};
int person::m_B = 1;
int main()
{
person p;
cout << sizeof(p) << endl;
system("pause");
return 0;
}
创建一个int属性和一个static int属性,类的大小为4个字节,因为static是静态成员变量,不属于类的对象
例3:
#include<iostream>
using namespace std;
class person
{
int m_A;
void func()
{
int a;
}
static void func2()
{
int b;
}
};
int main()
{
person p;
cout << sizeof(p) << endl;
system("pause");
return 0;
}
类的大小为4个字节,因为静态成员函数和非静态成员函数都不属于类的对象