类对象作为类成员
c++类中的成员可以是另一个类的对象,我们 称成员为 对象成员
例如
class A{}
class B
{
A a;
}
当其他类对象作为本类成员时,构造时候先构造类对象
析构的顺序与之相反
先有子体,组成母体,母体释放,子体解脱
## 静态成员
在成员变量和成员函数之前加上关键字static,被称为静态成员
静态成员变量
1.所有对象共享同一份数据
2.在编译阶段分配内存
3.类内声明,类外初始化
class person()
{
public:
static void func()
{
m_a=100; //静态成员函数不可以访问非静态成员函数
}
static int m_a;//静态成员变量 类内声明
};
int person ::m_a=0; //类外初始化
静态成员函数
1.所有对象共享同一个函数
2.静态成员函数只能访问静态成员变量
有两种访问方式
第一种通过对象访问:
person p; p.func();
第二种通过访问类作用域名访问:
person::func();
在c++中,类内的成员变量和成员函数分开存储
在c++中,空对象的占用内存空间为:1,c++编译器会给每个空对象也分配一个字节孔间距,是为了区分空对象占用内存的位置
class p
{
};
p p;
本人此处也不理解,但据资料,以后懂了再来
深度探索c++对象模型中是这样说的:
那是被编译器插进去的一个char ,使得这个class的不同实体(object)在内存中配置独一无二的地址。
也就是说这个char是用来标识类的不同对象的
参考资料:深度探索c++对象模型
只有非静态成员变量才属于类的对象上
class A
{
int a;
static int b; //
};
int person::b=0;
此时一个sizeof(A)的大小为4,因为只有非静态成员变量才属于类的对象上



