首頁 > 後端開發 > C++ > 內聯成員函數可以在 .cpp 檔案中定義並且仍然內聯嗎?

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

Patricia Arquette
發布: 2024-10-26 19:03:02
原創
693 人瀏覽過

Can Inline Member Functions Be Defined in a .cpp File and Still Be Inlined?

.cpp 檔案中的C 內聯成員函數:困境與解

在C 中,內聯成員函數通常在頭文件中聲明效率原因。但是,某些情況下可能需要在 .cpp 檔案中實作該函數。讓我們深入研究這樣的情況:

考慮以下具有循環相依性的場景:

A.h

<code class="cpp">#pragma once
#include "B.h"

class A {
    B b;
};</code>
登入後複製

B.h

<code class="cpp">#pragma once

class A;

class B {
    inline A getA();
};</code>
登入後複製

B.h

要打破循環依賴,需要將getA 的實作放在

B.cpp
<code class="cpp">#include "B.h"
#include "A.h"

inline A B::getA() {
    return A();
}</code>
登入後複製
:

B.cpp

困境

inline 關鍵字在頭檔和.cpp 檔案中的放置會影響函數的內聯嗎?

解決方案

不幸的是,儘管.cpp 檔案中有inline 關鍵字,編譯器不會內聯getA,除非它在B.cpp本身中使用。這是因為編譯器在遇到內聯函數時都需要定義它。通常,將函數放在頭檔中可以確保這種可用性。

最佳實務

根據 C FAQ,必須在頭檔中定義內嵌函數。將它們放在 .cpp 檔案中可能會導致無法解決的外部錯誤。

替代解決方案所提供的方案並不建議將內嵌函數放在 .cpp 檔案中的替代解決方案。 cpp 檔案。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板