亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++:const引用,類型說明符之前和之后

C ++:const引用,類型說明符之前和之后

C++
達令說 2019-12-10 10:02:01
以下參數之間的區別是什么?int foo1(const Fred &arg) {...}和int foo2(Fred const &arg) {...}?我在parashift常見問題解答中看不到這種情況。
查看完整描述

2 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

相對于&,從右到左讀取const 沒什么區別,因此它們都表示對不變的Fred實例的引用。


Fred& const這將意味著引用本身是不可變的,這是多余的;當處理const指針時, Fred const*和和Fred* const都有效,但有所不同。


這是一個樣式問題,但是我更喜歡將其const用作后綴,因為它可以被一致地應用,包括const成員函數。


查看完整回答
反對 回復 2019-12-10
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

行為

const T&和之間沒有語義差異T const&;語言將它們視為相同類型。(同樣的道理也適用于const T*T const*。)

作為風格問題

但是,關于在造型上您更喜歡哪個,我將拒絕其他許多答案,并且更喜歡const T&(和const T*):

  • const T&是Stroustrup的《 C ++編程語言》一書中使用的樣式。

  • const T& 是C ++標準本身使用的樣式。

  • const T*是K&R的《 C編程語言》一書中使用的樣式。

  • const T* 是C標準中使用的樣式。

  • 由于上述因素,我認為const T&const T*具有比T const&/ 更多的慣性T const*。const T&/從const T*經驗上看,對我來說比T const&T const*在我所見過的所有C ++和C代碼中更常見。我認為遵循常規做法比從原則上遵循從右到左的解析規則更具可讀性。

  • 使用T const*,將*as 放錯地方似乎更容易T* const(尤其是如果人們不習慣它)。相反,const* T不是合法的語法。

從右到左的解析規則呢?

關于人們似乎喜歡使用的從右到左的整個解析論點:正如我在另一個答案的評論中提到的,const T&從右到左也不錯。它是對T常數的引用?!?T”和“ constant”都可以用作形容詞或名詞。(此外,讀取T const*從右到左可以是不明確的,因為它可能被錯誤地解釋為“指針常數 T”,而不是稱為“指針恒定T”)。


查看完整回答
反對 回復 2019-12-10
?
森欄

TA貢獻1810條經驗 獲得超5個贊

引用的工作方式與指針不同:對于指針,您可以使用“常量指針”(type * const p)和“指向常量的指針”(const type * ptype const * p)。

但是您沒有參考資料:參考資料始終會引用同一對象;從這種意義上講,您可以認為“引用”是“常量引用”(使用“常量指針”的方式相同)。

因此,“ type&const ref”之類的內容不合法。您只能具有“對類型的引用”(type &ref)和“對常量類型的引用”(const type &reftype const &ref;兩者完全相同)。

最后一件事:即使用const type英語聽起來聽起來更正確,但編寫仍type const可以使系統更系統地理解“從右到左”的聲明:int const & ref可以讀取“ ref是對常量int的引用”。或更復雜的示例:int const * const & ref,ref是指向常量int的常量指針的引用。

結論:在您的問題上,兩者是完全相同的。


查看完整回答
反對 回復 2019-12-10
  • 2 回答
  • 0 關注
  • 512 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號