2 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個贊
你問兩個問題,如果我理解正確的話
指針和引用有什么區(qū)別
為什么支持這兩種數(shù)據(jù)類型
開始:
指針指的是內(nèi)存中數(shù)據(jù)類型所在的位置。給定底層硬件,指針的大小是固定的,通常為 4 或 8 個字節(jié) - 完全不管它實(shí)際上指向什么。此外,可以使用無效值將指針傳遞給函數(shù) -
foo(reintepret_cast<int *>(0xDEADBEEF) );
。相比之下,引用確?;A(chǔ)數(shù)據(jù)是有效的——因?yàn)橐檬菍ο蟊旧淼膭e名,并且不能移動(前提是被引用的對象仍在范圍內(nèi)——根據(jù)下面的評論進(jìn)行編輯)。有是有理由支持這兩種類型。第一個原因是確保傳遞給函數(shù)的數(shù)據(jù)是有效的 - 不會在測試指針有效性(而不是
NULL
)上浪費(fèi)周期。第二個原因是可以確定數(shù)據(jù)不僅指向有效位置,而且還指向有效數(shù)據(jù)對象。但主要原因是引用允許我們享受調(diào)用函數(shù)而不按值傳遞參數(shù)的好處,但仍然保證參數(shù)引用有效值。

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊
你應(yīng)該問 Bjarne Stroustrup 為什么 C++ 有引用。在其他地方,他在第 7.7 節(jié)參考資料,C++ 編程語言,第四版第 189 頁中提供了他的基本原理?!禖++ 的設(shè)計與演化》第 86 卷。
- 2 回答
- 0 關(guān)注
- 312 瀏覽
添加回答
舉報