.cpp 檔案中的內聯成員函數定義
在C 中,內聯成員函數最好在頭檔中定義,以允許編譯器在編譯期間內聯它們。但是,某些情況可能需要將實作放在標頭之外,例如類別之間的循環相依性。
在給定的範例中,類別 A 包含類別 B,類別 B 又包含 A 的前向宣告。這樣迴圈往復,B.cpp中定義了B類別的getA()函數。這就提出了一個問題:編譯器是否仍內嵌 getA(),如果是,哪個定義優先?
根據 C FAQ,內嵌函數的定義必須放在它的頭檔中對所有使用它的來源檔案可見。因此,在這種情況下,編譯器不會內聯 getA(),除非在 B.cpp 本身內呼叫。
最佳實務規定 inline 關鍵字只能在類別外部的函數定義中使用一次身體。因此,放置在頭檔中的任何內聯關鍵字都是多餘的。
不幸的是,沒有已知的方法可以在 .cpp 檔案中定義內聯成員函數,同時仍確保編譯器將其內聯。
以上是我可以在 .cpp 檔案中定義內聯成員函數並仍然獲得內聯嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!