??????? 在C++中,类的成员变量和成员函数分开存储,只有非静态成员变量在属于类的对象上。
//成员变量和成员函数分开存储
class Person
{
};
void test()
{
Person p;
cout << "size of p = " << sizeof(p) << endl;
}
输出结果:
size of p = 1
原因:
????????C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置,每个空对象也应该右一个独一无二的内存地址。
例1:
//成员变量和成员函数分开存储
class Person1
{
int a = 10;//非静态成员变量,属于类对象
};
class Person2
{
static int b;//静态成员变量,不属于类对象
};
int Person2 :: b = 10;
void test()
{
Person1 p1;
cout << "size of p1 = " << sizeof(p1) << endl;
Person2 p2;
cout << "size of p2 = " << sizeof(p2) << endl;
}
输出结果:
size of p1 = 4
size of p2 = 1
?例2:
//成员变量和成员函数分开存储
class Person1
{
static void func1()//静态成员函数,不属于类对象
{
cout << "静态成员函数" <<endl;
}
};
class Person2
{
static void func2()//非静态成员函数,不属于类对象
{
cout << "非静态成员函数" <<endl;
}
};
void test()
{
Person1 p1;
cout << "size of p1 = " << sizeof(p1) << endl;
Person1 p2;
cout << "size of p2 = " << sizeof(p2) << endl;
}
输出结果:
size of p1 = 1
size of p2 = 1