C++返回引用類型 指針的引用
C++返回引用類型
A& a(){ return *this;} 就生成了一個(gè)固定地址的指針,并把指針帶給你
但A a() { return *this;}會(huì)生成一個(gè)臨時(shí)對(duì)象變量,并把這個(gè)臨時(shí)變量給你
這樣就多了一步操作
當(dāng)返回一個(gè)變量時(shí),會(huì)產(chǎn)生拷貝。當(dāng)返回一個(gè)引用時(shí),不會(huì)發(fā)生拷貝,你可以將引用看作是一個(gè)變量的別名,就是其他的名字,引用和被引用的變量其實(shí)是一個(gè)東西,只是有了兩個(gè)名字而已。
問(wèn)題的關(guān)鍵是,當(dāng)你想要返回一個(gè)引用而不是一個(gè)拷貝時(shí),你要確保這個(gè)引用的有效性,比如:
int & fun() { int a; a=10; return a; }
這樣是不行的,因?yàn)閍會(huì)在fun退出時(shí)被銷(xiāo)毀,這時(shí)返回的a的引用是無(wú)效的。
這種情況下,如果fun的返回類型不是int & 而是int就沒(méi)有問(wèn)題了。
指針的引用
GetNearestFontInTwips(CFont *&aFont, const TFontSpec &aFontSpec);
第一個(gè)參數(shù)aFont是一個(gè)指針, 前面加上*&表示指針的引用, 其實(shí)可以如下看待這個(gè)方式(CFont*) &aFont, 這就一目了然了.
posted on 2007-12-14 15:59 郭天文 閱讀(11001) 評(píng)論(0) 編輯 收藏 引用 所屬分類: VC++