2 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
相對(duì)于&,從右到左讀取const 沒(méi)什么區(qū)別,因此它們都表示對(duì)不變的Fred實(shí)例的引用。
Fred& const這將意味著引用本身是不可變的,這是多余的;當(dāng)處理const指針時(shí), Fred const*和和Fred* const都有效,但有所不同。
這是一個(gè)樣式問(wèn)題,但是我更喜歡將其const用作后綴,因?yàn)樗梢员灰恢碌貞?yīng)用,包括const成員函數(shù)。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
行為
const T&
和之間沒(méi)有語(yǔ)義差異T const&
;語(yǔ)言將它們視為相同類型。(同樣的道理也適用于const T*
和T const*
。)
作為風(fēng)格問(wèn)題
但是,關(guān)于在造型上您更喜歡哪個(gè),我將拒絕其他許多答案,并且更喜歡const T&
(和const T*
):
const T&
是Stroustrup的《 C ++編程語(yǔ)言》一書中使用的樣式。const T&
是C ++標(biāo)準(zhǔn)本身使用的樣式。const T*
是K&R的《 C編程語(yǔ)言》一書中使用的樣式。const T*
是C標(biāo)準(zhǔn)中使用的樣式。由于上述因素,我認(rèn)為
const T&
/const T*
具有比T const&
/ 更多的慣性T const*
。const T&
/從const T*
經(jīng)驗(yàn)上看,對(duì)我來(lái)說(shuō)比T const&
/T const*
在我所見(jiàn)過(guò)的所有C ++和C代碼中更常見(jiàn)。我認(rèn)為遵循常規(guī)做法比從原則上遵循從右到左的解析規(guī)則更具可讀性。使用
T const*
,將*
as 放錯(cuò)地方似乎更容易T* const
(尤其是如果人們不習(xí)慣它)。相反,const* T
不是合法的語(yǔ)法。
從右到左的解析規(guī)則呢?
關(guān)于人們似乎喜歡使用的從右到左的整個(gè)解析論點(diǎn):正如我在另一個(gè)答案的評(píng)論中提到的,const T&
從右到左也不錯(cuò)。它是對(duì)T常數(shù)的引用。“ T”和“ constant”都可以用作形容詞或名詞。(此外,讀取T const*
從右到左可以是不明確的,因?yàn)樗赡鼙诲e(cuò)誤地解釋為“指針常數(shù)到 T”,而不是稱為“指針以恒定T”)。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
引用的工作方式與指針不同:對(duì)于指針,您可以使用“常量指針”(type * const p
)和“指向常量的指針”(const type * p
或type const * p
)。
但是您沒(méi)有參考資料:參考資料始終會(huì)引用同一對(duì)象;從這種意義上講,您可以認(rèn)為“引用”是“常量引用”(使用“常量指針”的方式相同)。
因此,“ type&const ref”之類的內(nèi)容不合法。您只能具有“對(duì)類型的引用”(type &ref
)和“對(duì)常量類型的引用”(const type &ref
或type const &ref
;兩者完全相同)。
最后一件事:即使用const type
英語(yǔ)聽(tīng)起來(lái)聽(tīng)起來(lái)更正確,但編寫仍type const
可以使系統(tǒng)更系統(tǒng)地理解“從右到左”的聲明:int const & ref
可以讀取“ ref是對(duì)常量int的引用”。或更復(fù)雜的示例:int const * const & ref
,ref是指向常量int的常量指針的引用。
結(jié)論:在您的問(wèn)題上,兩者是完全相同的。
- 2 回答
- 0 關(guān)注
- 504 瀏覽
添加回答
舉報(bào)