一、知识要点
1、数组维数
非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数
EG:int size = 3;
double value[size]; //error
const int sz = get_size();
double vl[sz];//error
2、数组初始化
函数体外定义的内置数组,元素初始化为0
函数体内定义的内置数组,元素无初始化
不管在哪里定义,如果数组元素是类类型,自动调用默认构造函数对元素初始化;若无默认构造函数,必须显示初始化元素
3、指针赋值
将int型变量赋给指针是非法的,尽管是0,但允许把数值0和编译时可获得0值的const量赋给指针
int zero = 0;
const int zr = 0;
int *p = zero;//error
p = zr;//right
p = 0;//right
4、void*指针可以保存任何类型对象的地址,不允许使用void*指针操纵其所指向的对象
5、size_t:数组长度 unsigned;sizeof()的返回值
size_type:vector.size()
ptrdiff_t:指针减法操作的结果 signed
6、c++允许计算数组或对象的超出末端的地址(范围的下一个),但不允许对该地址进行解引用,而计算数组超出末端位置之的 (范围后的第二个)及首地址以前的地址是不合法的。
const int size = 5;
int s[size] = {1, 2, 3, 4, 5};
int *begin = s;
int *end = s + size;//right
for (;begin != end; ++begin)
{
cout << *begin;
}
二、遗留
1、p120 给指针赋值或通过指针进行赋值
2、p128 指针和typedef
三、工作收获
仔细研究了回调函数和工厂模式,对回调函数的理解加深不少,但是抽象工厂模式还模糊
——————————
加油加油加油!我指的是学习和减肥~嚯嚯~