什么是引用?
引用和指针的区别与联系
指针和引用的异同点
指针 | 引用 |
---|---|
指针本身是对象 | 引用本身不是对象,只是对象的别名 |
允许对指针本身进行赋值和拷贝,在指针的生命期内可以指向不同的对象(只要指针不是常量指针) | 引用定义时就和一个对象绑定,且始终和这个对象绑定,无法令引用重新绑定到另一个对象 |
指针无须在定义时赋初值,在块作用域内的指针如果没有被初始化,将拥有一个不确定的值. | 引用必须初始化. |
可以定义指向指针的指针 | 无法定义引用的引用 |
引用的常见用途
引用通常不用于声明变量,而用于参数类型和返回类型的描述.
1 | void func1(Cls* pobj){ pobj->xxx();} |
以下两个函数被视为”same signature”(所以二者不能同时存在):
1 | double imag(const double& im){...} |
Q:const是不是函数签名的一部分?
A:是的,两个函数,一个函数有const,另一个没有,则可以看做函数重载.