基于指針pointers和引用references的區(qū)別分析
指針用“*”和“->”操作符,引用用"."操作符,當(dāng)然這是表面的區(qū)別。
1、引用必須代表一個(gè)對(duì)象,沒有所謂的空引用。指針可以為NULL。即引用必須有初值,指針不然。所以在使用pointers之前,必須測(cè)試它是否為null。references不需要測(cè)試。
2、pointers可以被重新賦值,指向另一個(gè)對(duì)象,reference總是指向(代表)它最初獲得的那個(gè)對(duì)象:
string s1("Nancy");
string s2("Clancy");
string &rs = s1; //rs指向s1.
string *ps = &s1; //ps指向s1.
rs = s2; //rs仍然代表s1,
//但是s1的值變成了“Clancy”
ps = &s2; //ps現(xiàn)在指向s1,
//s1沒有變化
3、還有一些情況需要使用references。例如實(shí)現(xiàn)某些操作符的時(shí)候。最常見的例子是operator[]。這個(gè)操作符很特別的必須返回某種“能夠被當(dāng)做assignment賦值對(duì)象”的東西。
4、結(jié)論:當(dāng)你知道你需要指向某個(gè)東西,而且絕不會(huì)改變指向其他東西,或是你實(shí)現(xiàn)一個(gè)操作符而其語法需求無法由pointers達(dá)成,你應(yīng)該選擇references。任何其他時(shí)候,請(qǐng)采用pointers。
相關(guān)文章
Java中OkHttp 超時(shí)設(shè)置的實(shí)現(xiàn)
超時(shí)設(shè)置是網(wǎng)絡(luò)編程中不可忽視的一部分,本文就來介紹一下Java中OkHttp 超時(shí)設(shè)置的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06
Spring security 自定義過濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)
這篇文章主要介紹了Spring security 自定義過濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
關(guān)于MyBatis plus條件構(gòu)造器的逐條詳解
什么是條件構(gòu)造器呢?簡(jiǎn)單來說,條件構(gòu)造器就是用來生成我們查數(shù)據(jù)庫的sql。它可以簡(jiǎn)化sql代碼的編寫,靈活、方便且易于維護(hù)2021-09-09
Java?hibernate延遲加載get和load的區(qū)別
這篇文章主要介紹了Java?hibernate延遲加載get和load的區(qū)別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
spring-boot-maven-plugin?配置有啥用
這篇文章主要介紹了spring-boot-maven-plugin?配置是干啥的,這個(gè)是SpringBoot的Maven插件,主要用來打包的,通常打包成jar或者war文件,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
關(guān)于idea的gitignore文件編寫及解決ignore文件不生效問題
這篇文章主要介紹了idea的gitignore文件編寫及解決ignore文件不生效問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Java之字符串轉(zhuǎn)換成Java對(duì)象方式
這篇文章主要介紹了Java之字符串轉(zhuǎn)換成Java對(duì)象方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

