国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C++之引用變量

2019-11-14 09:15:55
字體:
供稿:網(wǎng)友

引用是定義變量的別名:

int rats;

int & rodents = rats;

則rodents是rats的別名,他們的值和地址都相同,操作rodents和操作rats一樣。注意在聲明引用時(shí)必需將其初始化,不能拆開先聲明再賦值。以上引用聲明實(shí)際上時(shí)如下代碼的偽裝表示:

int * const PR = &rats;

引用變量的主要途徑時(shí)用作函數(shù)的形參,函數(shù)將使用原始數(shù)據(jù),而不是其副本。同指針一樣,引用也為函數(shù)處理大型結(jié)構(gòu)和類提供方便途徑。確實(shí),引入引用主要是為了這些類型的,而不是用于基本的內(nèi)置類型。

比較以下三個(gè)函數(shù)頭,體會(huì)引用作為函數(shù)參數(shù)的作用:

void swap_1(int & a, int & b);//即用a、b作為參數(shù)的引用

void swap_2(int * p, int * q);

void swap_3(int a, int b);

另一種情況,如果意圖讓程序只是用參數(shù)值而不修改,又想用引用作為參數(shù),則應(yīng)該使用常量引用:

double refcube (const double & ra);

目前,對(duì)于形參為const引用的C++函數(shù),如果實(shí)參不匹配,其行為將類似于值傳遞,使用臨時(shí)變量儲(chǔ)存值而確保原始數(shù)據(jù)不被修改。

總結(jié)起來,應(yīng)盡可能將引用聲明為const:

1、避免無意中修改數(shù)據(jù);

2、能處理const和非const實(shí)參,否則只能接收非const數(shù)據(jù);

3、能夠正確生成并使用臨時(shí)變量。

引用主要用于結(jié)構(gòu)和類,雖然有些時(shí)候也能使用值傳遞實(shí)現(xiàn),但與復(fù)制原始結(jié)構(gòu)的拷貝相比,使用引用更節(jié)省時(shí)間和內(nèi)存。不僅作為參數(shù),還可以作為返回值。返回值,從概念上說,這個(gè)值被復(fù)制到一個(gè)臨時(shí)位置,然后調(diào)用程序使用這個(gè)值。相比把整個(gè)結(jié)構(gòu)復(fù)制到一個(gè)臨時(shí)位置,使用引用作為返回值,效率更高。

返回引用時(shí)最重要的一點(diǎn)是hi,避免返回函數(shù)終止時(shí)不復(fù)存在的內(nèi)存單元引用。如下:

const free_throws & clone ( free_throws & ft)

{

free_throws newguy;

newguy = ft;

return newguy;

}

返回時(shí),相當(dāng)于free_throws & tmp = newguy;然而函數(shù)調(diào)用完后,newguy釋放,其別名(而不是值拷貝)tmp也沒了。避免的最簡單方法是,返回一個(gè)作為參數(shù)傳遞給函數(shù)的引用。

總之,不要返回局部對(duì)象的引用;同理,不要返回指向局部變量的指針。

為避免對(duì)返回的引用賦值而被修改,因此最好將const應(yīng)用于返回值。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴堡县| 昌吉市| 江西省| 慈利县| 莒南县| 黄梅县| 和龙市| 东明县| 万源市| 明光市| 镇巴县| 洛宁县| 巴马| 沧源| 怀宁县| 榆树市| 惠水县| 唐河县| 福州市| 甘孜县| 昌宁县| 洛隆县| 越西县| 织金县| 阳春市| 萨迦县| 寻甸| 临桂县| 登封市| 榆树市| 青海省| 南康市| 祁东县| 宁都县| 石屏县| 富裕县| 中阳县| 盱眙县| 盱眙县| 称多县| 临湘市|