1. 首先明确:引用本质是const指针,编译时引用被转化成指针。深入分析C++引用
int& r; //等价于 int* const r;
2. 由于是const类型,所以不能为空,而且初始化有且仅有一次,初始化之后不可更改指向的对象。
int* p=NULL; int& r=*p; //可以通过编译,但使用r时会崩溃
3. 引用占据空间,且大小跟指针一样
class A{ char& r; }; int main(){ cout<<sizeof(A)<<endl;//输出4,char*占4字节 }
4. 多态中,父类的引用可以指向子类对象,如果说引用是别名怎么说的过去呢?
5. sizeof(引用)是指向对象的大小,sizeof(指针)是指针本身大小
6. 有多级指针(int** p),没有多级引用