1、引用介绍
,在班上同学们给他起了个外号,不管叫小明还是他的外号都是叫小明他自己就和引用一样,如下:
此时b就是a的引用,我们可以通过b来修改a,此处应注意:引用在创建时就应该初始化为指向一个已存在的对象,并且引用一旦被初始化就不可以修改其指向。
2、const引用
所以:非const引用只能指向非const同类型的对象,但是const引用可以初始化为不同但相关的类型的对象或者初始化为右值。
3、函数中的引用
如下面这样:
int& Fun()
{
}
4.使用引用作为函数参数及返回值的用法及注意点。
(1)引用作为函数的参数时
非引用形参:
非引用形参我们有分为一般的值传递及指针传递,一般的值传递从字面意思就可以看出来就是单纯的值的传递,即通过复制的传递的实参的副本来进行的,而实际上的实参没有进行任何的操作,当函数结束时,形参也就不再存在。第二类是指针形参,指针形参顾名思义就是传递的是地址,实际上同样是值传递,只不过从传递的是地址值,此时当我们对传递的参数的值进行操作时,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而形成了实参的一个副本,所以当我们修改局部变量时,同时修改了实参指向的值,但是如果我们在函数中修改形参的地址指向却不会修改实参的指向,临时变量虽然是实参的副本,但只是表示指向相同,本质上表示两个不同的指针。
下例说明指针传递的过程:
void FunPtr(int *pIVal)
引用形参:
引用形参在C++中用途广泛,c++也推荐使用引用作为形参,而非用指针,指针本质上依然是值传递,但是引用不是引用形参实际上是传递实参的别名,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间但是这是存放的是由主调函数放进来的实参的地址被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量,正式以为如此,被调函数对形参做的任何操作都影响着主调函数的