C++返回引用類型
A& a(){ return *this;} 就生成了一個固定地址的指針,并把指針帶給你
但A a() { return *this;}會生成一個臨時對象變量,并把這個臨時變量給你
這樣就多了一步操作
當(dāng)返回一個變量時,會產(chǎn)生拷貝。當(dāng)返回一個引用時,不會發(fā)生拷貝,你可以將引用看作是一個變量的別名,就是其他的名字,引用和被引用的變量其實(shí)是一個東西,只是有了兩個名字而已。
問題的關(guān)鍵是,當(dāng)你想要返回一個引用而不是一個拷貝時,你要確保這個引用的有效性,比如:
int & fun() { int a; a=10; return a; }
這樣是不行的,因?yàn)閍會在fun退出時被銷毀,這時返回的a的引用是無效的。
這種情況下,如果fun的返回類型不是int & 而是int就沒有問題了。
指針的引用
GetNearestFontInTwips(CFont *&aFont, const TFontSpec &aFontSpec);
第一個參數(shù)aFont是一個指針, 前面加上*&表示指針的引用, 其實(shí)可以如下看待這個方式(CFont*) &aFont, 這就一目了然了.