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

首頁 > 編程 > C++ > 正文

讀書筆記《More Effective C++》條款1:仔細區(qū)別pointers和references

2019-11-06 06:33:58
字體:
來源:轉載
供稿:網(wǎng)友

pointers使用“*”和“->”操作符,references則使用“.”

1.沒有所謂的null reference。一個reference必須總代表某個對象,pointer可以設置為null。也就是說,如果這個變量總是必須代表一個對象,不允許把這個變量設置為null,那么就要使用reference。

2.由于reference一定得代表某個對象,C++因此要求references必須有初值。但是pointers就沒有這樣的限制。

3.“沒有所謂的null reference”這個事實意味使用references可能會比使用pointers更富效率。這是因為使用reference之前不需要測試其有效性(是否為空指針)。

4.pointers和references之間的另一個重要差異就是,pointers可以被重新賦值,指向另一個對象,reference卻總是指向(代表)它最初獲得的那個對象。

結論:當你知道你需要指向某個東西,而且絕不會改變指向其他東西,或是當你實現(xiàn)一個操作符而其語法需求無法由pointers達成,你就應該選擇references。任何其他時候,請采用pointers。

博文摘要:

從概念上講。指針從本質(zhì)上講就是存放變量地址的一個變量,在邏輯上是獨立的,它可以被改變,包括其所指向的地址的改變和其指向的地址中所存放的數(shù)據(jù)的改變。

而引用是一個別名,它在邏輯上不是獨立的,它的存在具有依附性,所以引用必須在一開始就被初始化,而且其引用的對象在其整個生命周期中是不能被改變的(自始至終只能依附于同一個變量)。

相同點:

都是地址的概念;指針指向一塊內(nèi)存,它的內(nèi)容是所指內(nèi)存的地址;而引用則是某塊內(nèi)存的別名。

不同點:

1.指針是一個實體,而引用僅是個別名;

2.引用只能在定義時被初始化一次,之后不可變;指針可變;

3.引用沒有const,指針有const,const的指針不可變;

4.引用不能為空,指針可以為空;

5.“sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身的大小;

6.指針和引用的自增(++)運算意義不一樣;

7.引用是類型安全的,而指針不是 (引用比指針多了類型檢查)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 海原县| 天门市| 北海市| 韩城市| 霍州市| 井研县| 石首市| 清原| 浮山县| 泌阳县| 高州市| 巴楚县| 兴海县| 定日县| 沭阳县| 连云港市| 融水| 屏山县| 乐安县| 循化| 阿克| 财经| 昂仁县| 黑龙江省| 定边县| 河池市| 桑日县| 黄大仙区| 宜川县| 科技| 永登县| 隆德县| 固安县| 阜康市| 陇南市| 松阳县| 惠水县| 东乡县| 云南省| 会理县| 宁安市|