继续写一下类和对象的一些知识;
类中的成员变量和成员函数是分开存储的,只有非静态成员变量才属于类的对象上,静态成员变量存储在静态区。
在下列代码中,分别定义非静态成员变量和静态成员变量,来计算类的对象的大小,以验证创建的变量是不是存储在类上。
计算类的大小所用的函数为:
void test01()
{
Person p;
cout << "size of p =" << sizeof(p) << endl;
}
首先应该明确:
空对象占用内存空间为1
c++编译器会给每个空对象也分配一个字节空间,为了区分空对象占内存的位置
所以:
class Person
{};
大小为1个字节;
然后为为类分别添加非静态和静态的成员变量和成员函数,逐次验证类的大小,得到以下结论:
只有非静态成员变量属于类的对象上,增加类的大小;
静态成员变量和成员函数(静态和非静态)都不属于类的对象上,不增加类的大小;
class Person
{
int m_A;//非静态成员变量 属于类的对象上 只有这种变量属于类的对象上
static int m_B;//静态成员变量 共享,不属于类的对象上,不增加类的大小
void func()//非静态成员函数 不增加类的大小
{}
static void func2() {}//静态成员函数 共享,不属于类的对象上,不增加类的大小
};
int Person::m_C = 0;
this指针
this指针 - 指向被调用的成员函数所属的对象
1、当形参和成员变量同名时,可用this指针来区分 - 解决名称冲突
2、在类的非静态成员函数中返回对象本身,可用return *this
首先创建一个Person类:
包含有参构造函数
clas