引用是別名而非指針,引用與指針的區別:
1、不存在空引用
2、所有的引用都要初始化
3、一個引用永遠指向用來對它初始化的那個對象
引用是一個現有對象的別名,用對象來初始化引用後,對象名字或引用的名字都可以用於指向該對象
a= &ra=a; --ra; a=; *ip=&ra;
一些編譯器可以捕捉到那些明顯的創建空引用的嘗試:
有些卻無法偵測到不那麼明顯的空引用:
Employee *getAnEmployee();
//...
如果getAnEmployee返回的是一個空指針,那麼其後的代碼行為就是未定義的,最好使用一個指針來存放getEmployee返回的結果:
Employee *employee=(employee)
引用常常成為函數參數的優秀選擇:
template<typename T> swap(T &a, T &=== x=,y=
引用所指向的對象可以沒有名字:
swap(grade[i],grade[j]);
考慮如下函數:
inline set_2d( *a, i, j, *m+j]=a[i*m+j]*a[i*m+j]+a[i*m+
使用引用可以簡化和優化:
inline set_2d( *a, i, j, &r=a[i*m+=r*r+
一個指向非常量的引用是不可以用字面值或臨時值進行初始化的:
然而一個指向常量的引用就可以:
&cd=; template<typename T> T &a, T & a+ &greeting=add((), ());