知识点6 尽量用const替换#define
const有类型,可以在编译阶段进行安全检查。#define没有类型,在预处理阶段就已经替换掉原内容,不可以进行类型检查。(报错时已经返回define后的错误值)
const有作用域,#define不重视作用域,默认从定义位置执行到#undefine或者结尾,如果要定义在指定作用域下有效的常量就不能够使用#define。
知识点7【重要】通过引用的方式给原有的变量取别名
int num = 10;
int &a = num;
a完全等价于num
引用必须初始化,一旦初始化以后就不能够再次修改别名
知识点8 给数组取别名
方法一
- void test 01()
- {
- int arr [5] = {10,20,30,40,50};
- int (&my_arr) [5] = arr;
- int i = 0;
- for (i = 0;i < 5; i++)
- {
- cout << my_arr[i] <<” “;
- }
- cout << endl;
- }
方法二 使用typedef给数组类型取别名
- void test 02()
- {
- int arr[5] = {10,20,30,40,50};
- typedef int TYPE_ARR[5];
- TYPE_ARR &myArr = arr;
- int i = 0;
- for(i = 0; i < 5; i++)
- {
- cout << myArr[i] << ” “;
- }
- cout << endl;
- }
知识点9 引用作为函数的参数
使用引用作为函数参数,方便与传递参数进行内部操作
知识点10 引用作为函数的返回值
给返回值取别名,当函数的返回值是引用时 ,不要返回局部变量,否则导致指针非法访问内存。
知识点11 引用的本质
本质是在C++内部的一个指针常量,等价于语句Type* const ref = &val;
编译器在编译过程中用常指针作为引用的内部实现,引用占用的空间大小和指针相同。
知识点12 指针的引用
在C++中能用引用尽量不使用指针。
知识点13 常引用
加入const防止数值被修改
当要给常数使用引用取别名时要用常引用
const int &num = 10;