天天看点

C++引用

引用是别名而非指针,引用与指针的区别:

1、不存在空引用

2、所有的引用都要初始化

3、一个引用永远指向用来对它初始化的那个对象

引用是一个现有对象的别名,用对象来初始化引用后,对象名字或引用的名字都可以用于指向该对象

一些编译器可以捕捉到那些明显的创建空引用的尝试:

employee &anemployee=*static_cast<employee*>(0)   //error!

有些却无法侦测到不那么明显的空引用:

employee *getanemployee();

//...

employee &anemployee=*getanemployee();   //可能是糟糕的代码

if(&anemployee==0)  //未定义的行为

如果getanemployee返回的是一个空指针,那么其后的代码行为就是未定义的,最好使用一个指针来存放getemployee返回的结果:

引用常常成为函数参数的优秀选择:

引用所指向的对象可以没有名字:

考虑如下函数:

使用引用可以简化和优化:

一个指向非常量的引用是不可以用字面值或临时值进行初始化的:

double &d=12.3 //错误!

swap(string("hello"),string(", world"));

然而一个指向常量的引用就可以:

继续阅读