C 中的傳回型別與函式簽章
在C 中,函數的傳回型別不被視為一般函式簽章的一部分,表示不是函數模板特化的函數。這意味著具有相同名稱和參數類型的函數可以重載,即使它們具有不同的返回類型。
函數範本特化的簽章
但是,對於函式範本專業化,傳回型別包含在簽章中。這是因為函數模板特化的簽名包括模板本身的簽名,以及它的返回類型和模板參數列表。
為什麼它不是函式簽章的一部份?
C 標準中沒有明確說明為什麼返回類型不被視為普通函數的函數簽名的一部分。不過可以推斷,這是因為函數重載主要是根據函數的識別符和參數類型來決定的。
當重載無效時
儘管如此由於返回類型不是簽名的一部分,因此標準確實禁止重載具有不同返回類型的函數。這意味著以下程式碼將在當前主要編譯器中導致編譯錯誤:
int f(); double f(); // invalid
結論
在C 中,返回類型不是普通函數的簽名,但包含在函數模板特化的簽章中。在重載函數和使用函數模板時理解這種差異非常重要。
以上是返回類型是 C 函數簽名的一部分嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!