成员变量和成员函数分开存储

成员变量和成员函数分开存储

  • 在c++中,类内的成员变量和成员函数分开存储
  • 只有非静态成员变量才属于类的对象上

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
using namespace std;
class PersonNull {
};
class Person {
int m_a; //非静态成员变量,属于类对象上
static int m_b;//静态成员变量 不属于类对象上
void func() {}//非静态成员函数 不属于类对象上
};
int Person::m_b = 0;
void test01() {
PersonNull p;
//空对象占用内存看空间
//c++ 会给每个空对象也分配一个字节空间,每个空对象也应该有一个独一无二的内存地址
cout << "size of p = " << sizeof(p) << endl;
}
void test02() {
Person p;//非空对象
//非静态成员变量属于类对象
cout << "size of p = " << sizeof(p) << endl;
}
int main() {
test01();
test02();
return 0;
}

运行结果:

1
2
size of PersonNull p = 1
size of Person p = 4