首頁 > 後端開發 > C++ > C 函數簽名是否包含回傳類型?

C 函數簽名是否包含回傳類型?

Barbara Streisand
發布: 2024-12-04 05:02:10
原創
746 人瀏覽過

Does C   Function Signature Include the Return Type?

回傳型別影響函數簽章嗎?

在 C 中,沒有函數範本宣告的函數在其簽章中排除其傳回型別。禁止僅根據不同的返回類型重載函數。

詳細說明

函數及其宣告和簽章之間的關係很複雜。

宣告與實體

函數宣告可以宣告功能實體或範本實體。普通函數和函數模板的明確特化屬於第一類。主函數模板或帶有未指定參數的明確特化屬於後者。

簽名定義

根據C 標準(1.3.10),函數簽名包含以下:

  • 參數類型
  • 對於類別函數上的成員、cv限定符以及包含類別

但是,此定義缺少傳回類型的提及。

函數模板和回傳類型

相反,函數模板特化的簽章包括函數簽章與傳回型別(14.5.5.1).

那麼,簽名到底是什麼?

對於非範本函數,簽章不包含回傳類型。但是,對於模板特化,返回類型被合併。

重載的含義

標準禁止僅根據不同的返回類型進行重載。不過,對於什麼構成這種差異仍然不明確。

編譯器行為

由於型別不相容,主要編譯器拒絕以下程式碼:

然而,他們接受:

結論

返回類型雖然不是非模板函數簽名的一部分,但對於確定函數類型兼容性至關重要。理解這些細微差別對於有效的 C 程式設計至關重要。

以上是C 函數簽名是否包含回傳類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板