1. 程式人生 > >關於標頭檔案中的重複包含和重複定義

關於標頭檔案中的重複包含和重複定義

為了避免重複定義,一般標頭檔案中不會存放定義,只存放函式宣告和變數的宣告。但也有例外,類、inline函式和編譯時值已知的const物件可以在標頭檔案中定義,這是因為遵守“單一定義規則”(One-Definition Rule, ODR)。根據此規則, 如果對同一個類的兩個定義完全相同且出現在不同編譯單位,會被當作同一個定義。當包含類的標頭檔案分別被兩個不同的編譯單位(file1.cpp, file2.cpp)包含,滿足ODR規則,會被當作同一個定義,所以不會有衝突。此外,模板和inline函式也適用此規則。