在 C 中,將類別成員函數宣告為內聯需要在頭檔中實現它們。這項要求源自於內聯函數的“一個定義規則 (ODR)”,該規則要求使用該函數的所有翻譯單元中都存在相同的定義。
確保遵守 ODR 的最簡單方法是包含定義位於所有翻譯單元均可存取的頭檔中。透過這樣做,編譯器可以在呼叫函數的所有實例中找到並使用相同的定義。
嘗試將內聯定義放入 .cpp 檔案中會導致無法解析的外部符號錯誤。發生這種情況是因為編譯器無法在呼叫它的翻譯單元中找到函數定義。
重申一下,頭檔中的內聯函數定義透過確保每個翻譯單元中存在相同的定義來促進 ODR 合規性。但是,需要注意的是,將函數宣告為內聯並不能保證編譯器會內聯。
以上是為什麼內聯函數定義必須放在頭檔中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!