1.引用在申明时必须初始化,否则会产生编译错误。
2.引用一旦初始化,它就维系在一定的目标上,再也不分开。任何对该引用的赋值,都是对该引用所维系的目标赋值,而不是将引用维系到另一个目标上。
3.引用与指针有很大的区别,指针是个变量,可以把它再赋值成指向其他的地址,然而,建立引用时必须进行初始化并且绝不会再指向其他的变量。
For example:
Int intone=2;
Int& rint=intone;
rint=3;
//此时rint和intone的值都是3;
Int inttwo=8;
Rint=inttwo;
Rint=10;
//此时rint和intone的值是10;
//inttwo的值扔为8。
//也就是说rint和intone仍是一体的,而和inttwo没什么关系。
4.引用存在的问题
因为引用隐藏了函数所使用的参数传递的类型,所以无法从所看到的函数调用判断其实值传递还是引用传递。正因为如此,下面的两个重载函数将引起编译报错:
Void fn(int a)
{
//....
}
Void fn(int &t)
{
//....
}
Int main()
{
Int a=5;
fn(a);//error 匹配哪一个函数?
}
5.
1.对于函数中的参数是类类型的引用类型,那么在定义这个函数时,可以直接把该引用类型的保护类型直接赋值给一个变量。
For example
Student(student &s)
{
K=s.k;
}
K为student类中的保护的int类型。