1:认识一下基本使用
int a;int &ra=a;
&在此不是求地址运算,而是起标识作用。
常见错误举例:
int a;
int &ra=&a; //错误 正确为int &ra=a
或者
void function(string&a)
{
string s;
a=&s; //错误 正确为a=s
}
2:引用的本质:
表达式int &ra = a; 将会被编译器转化成 int *const ra = &a;而引用之所以要初始化是因为 const 类型变量必须初始化,这个指针也必须有所指。
3:引用的目的
主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。跟指针的区别前面也讲了就是const形指针但是程序中使用指针,程序的可读性差。
4:引用支持 c++ 虚函数机制的代码
#include <iostream.h>
class A
{
public:
virtual void print() { cout<<"A.."<<endl; }
};
class B : public A
{
public:
virtual void print() { cout<<"B.."<<endl; }
};
class C : public B
{
public:
virtual void print() { cout<<"C.."<<endl; }
};
int main()
{
C c1;
A &a1 = c1;
a1.print(); // prints C
A a2 = c1;
a2.print(); // prints A
return 0;
}
上述代码使用引用支持虚函数机制。
而虚函数机制所需要的动态信息只能通过指针才能实现,所以更加说明引用其实就是一个 const 指针。