首頁 > 後端開發 > C++ > 主體

為什麼 `func(\'one\')` 會導致 C 隱式轉換出錯?

Mary-Kate Olsen
發布: 2024-11-01 05:36:02
原創
373 人瀏覽過

Why does `func(

C 隱式轉換

在 C 上下文中,隱式轉換的概念一直是討論的主題。最近關於「C 中還可以使用哪些其他有用的轉換?」的回答提出了關於正確理解 C 中轉換的問題。

考慮以下程式碼片段:

在此片段中,第一個函數呼叫 func("one") 的結果是一個錯誤。這是因為沒有從 const char * 到 A 的直接轉換。雖然存在從字串到 A 的轉換,但使用它會涉及多次隱式轉換,根據 C 標準,這是不允許的。

C 標準(SC22-N-4411.pdf) 在12.3.4 節「轉換」中指出:

這表示在執行轉換時只能套用一個隱式用戶定義的轉換。在第一個函數呼叫中,從 const char * 到 string 的轉換以及從 string 到 A 的轉換都是使用者定義的轉換。由於需要多次轉換,編譯器會引發錯誤。

以上是為什麼 `func(\'one\')` 會導致 C 隱式轉換出錯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!