国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 深州市| 义乌市| 平利县| 三明市| 罗定市| 鹿泉市| 常德市| 崇礼县| 宝丰县| 滨州市| 宾阳县| 临泽县| 乐业县| 衢州市| 晋宁县| 南漳县| 加查县| 都匀市| 惠安县| 汽车| 千阳县| 古蔺县| 永清县| 安达市| 天全县| 佳木斯市| 岑巩县| 佛冈县| 达日县| 肃宁县| 芒康县| 视频| 三河市| 永修县| 奈曼旗| 阿拉尔市| 安乡县| 广水市| 江油市| 高要市| 贡觉县|