目录
成员变量和函数的存储
在C++中,数据和函数是分开存储的。
- C++中的非静态数据成员直接内含在类对象中。
- 成员函数虽然内含在class声明之内,却不出现在对象中。
- 每一个非内联成员函数(non-inline member function)只会诞生一份函数实例.
代码实例
此代码输出为:size of (Person) 16(因为对齐)
#define _CRI_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
int m_A; //非静态成员变量,属于对象身上
void func() //4,非静态成员函数 不属于对象身上
{
};
static int m_B; //静态成员变量,不属于对象身上
static void func2() {}; //静态成员函数,不属于对象身上
double m_C; //8,非静态成员变量
//最后结果对象大小为16,原因为字节对齐,默认按最大的8字节对齐。
};
//结论:非静态成员变量,才属于对象。
void test01()
{
//Person p[10]:p[0],p[1].....
//空类的大小为1,每个实例的对象都有独一无二的地址,char维护这个地址
cout << "sizo of (Person)" << sizeof(Person) << endl;
}
int main()
{
test01();
return 0;
}