C++学习笔记16

来源:互联网 发布:2017nba数据统计 编辑:程序博客网 时间:2024/05/22 02:27

1,C++ 位域
C++的位域的出发点是从为了节约内存出发的,一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。如下:
这里写图片描述

这里写图片描述

小端:就是人阅读的逆序(内存递增方向)(Win10是小端)
大端:人阅读的顺序(相对于内存递增方向)

在win10下:给b赋值100(0110 0100),那么由于win10是小端,a1就是00,也即0;a1就是001也即1;a2就是011,也即3。

2,构造函数中,哪些成员变量一定要通过初始化列表来初始化?
构造函数初始化时必须采用初始化列表一共有三种情况,
1)需要初始化的数据成员是对象(继承时调用基类构造函数)
2)需要初始化const修饰的类成员
3)需要初始化引用成员数据

因为static属于类并不属于具体的对象,所以 static成员是不允许在类内初始化的,
那么static const 成员是不是在初始化列表中呢?
答案是NO,原因如下:
1) 一是static属于类,它在未实例化的时候就已经存在了,而构造函数的初始化列表,只有在实例化的时候才执行。
2)二是static成员不属于对象。我们在调用构造函数自然是创建对象,一个跟对象没直接关系的成员要它做什么呢。