我讀的C++常見問題 - 「8.6 - When should I use references, and when should I use pointers?」,特別是本聲明:C++爲什麼沒有「NULL引用」?
使用引用時,你可以和指針時,你必須。
...
例外上述情況是函數的參數或返回值需要一個「哨兵」參考 - 這並不是指一個對象的引用。這通常最好通過返回/獲取指針來完成,並且賦予NULL指針這種特殊意義(引用必須始終是別名對象,而不是取消引用的空指針)。
從我所看到的,對「標記」引用的需求通常是使用指針而不是引用的原因。我想知道的是:爲什麼C++沒有一個特殊的「NULL值」作爲引用?看起來它會使指針幾乎不必要,這將解決許多問題。
那麼爲什麼它不是語言規範的一部分呢?
編輯:
我不知道我的問題是明確的 - 我想我不litterally詢問NULL引用。大多數情況下,我在C++中讀到「引用是對象」。而且,在大多數OOP語言中,對象可以是NULL - Pascal,C#,Java,JavaScript,PHP等等,你可以使用someObject = null
或someObject := nil
。實際上,Pascal也支持指針,但仍然允許對象爲nil
,因爲它有其用處。那麼爲什麼C++在某種程度上是特殊的,並沒有一個NULL對象?這只是一個忽視或一個實際的決定?
祈禱告訴如何將刪除指針的需要? – 2012-07-10 07:54:43
@nathanwhite因爲然後引用將是指針的語法糖,據推測,只要指針是指針就可以使用。國際海事組織將完全刪除參考文件的一些好處。 – hvd 2012-07-10 07:56:46
閱讀[爲什麼C++有指針和引用?](http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references)和[C++:null reference](http:/ /stackoverflow.com/questions/4364536/c-null-reference)。 – 2012-07-10 07:56:48