类中的不同成员特性

类对象作为类成员

c++类中的成员可以是另一个类的对象,我们 称成员为 对象成员

例如

class A{}
class B
{
   A a;
}

当其他类对象作为本类成员时,构造时候先构造类对象

析构的顺序与之相反

先有子体,组成母体,母体释放,子体解脱

类中的不同成员特性_第1张图片


## 静态成员

在成员变量和成员函数之前加上关键字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,因为只有非静态成员变量才属于类的对象上

 

你可能感兴趣的:(笔记,c++,开发语言)