第二章
引用与指针
引用即别名
-
引用本身不是一个对象
-
不可定义为常量
-
不能定义指向引用的指针
指针为对象
- 指针的值应为下列四种:
1 指向一个对象
2 指向紧邻对象所占空间的下一个位置
3 空指针
4 无效指针
- 初始化为空指针
int *p=nullptr;
int *p=NULL;
- void* 可以存放任意类型对象的地址
const 限定符
-
常量引用是对const对象的引用
-
常量指针 是指指针本身是个常量,不可改变指向
-
类型要匹配
-
指向常量的指针也可以改指向非常量
-
顶层const 与 底层const
1 const int ci=42; //这是一个top 不能改变ci的值
2 const int *p=&ci; //这是一个low 可以改变p所指 且const与上式常量类型匹配
3 int *const p2=a; // 这是一个top 不能改变指针自身指向
对指针:top表示指针本身是个常量,low表示所指对象是个常量
4 const int &r=ci //这是一个low,因为引用非对象,故不能const
- 续
1 当执行拷贝操作时 可以忽略顶层cosnt,但不可忽略底层(非常量可以转化为常量)
2 const int* p=ci //正确 加了low
3 int &r=ci //错误 见上