首頁  >  文章  >  後端開發  >  我可以在 .cpp 檔案中定義內聯成員函數並仍然獲得內聯嗎?

我可以在 .cpp 檔案中定義內聯成員函數並仍然獲得內聯嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 17:34:30311瀏覽

 Can I Define Inline Member Functions in a .cpp File and Still Get Inlining?

.cpp 檔案中的內聯成員函數定義

在C 中,內聯成員函數最好在頭檔中定義,以允許編譯器在編譯期間內聯它們。但是,某些情況可能需要將實作放在標頭之外,例如類別之間的循環相依性。

在給定的範例中,類別 A 包含類別 B,類別 B 又包含 A 的前向宣告。這樣迴圈往復,B.cpp中定義了B類別的getA()函數。這就提出了一個問題:編譯器是否仍內嵌 getA(),如果是,哪個定義優先?

根據 C FAQ,內嵌函數的定義必須放在它的頭檔中對所有使用它的來源檔案可見。因此,在這種情況下,編譯器不會內聯 getA(),除非在 B.cpp 本身內呼叫。

最佳實務規定 inline 關鍵字只能在類別外部的函數定義中使用一次身體。因此,放置在頭檔中的任何內聯關鍵字都是多餘的。

不幸的是,沒有已知的方法可以在 .cpp 檔案中定義內聯成員函數,同時仍確保編譯器將其內聯。

以上是我可以在 .cpp 檔案中定義內聯成員函數並仍然獲得內聯嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn