首頁 > 後端開發 > C++ > 為什麼模板類別實作和聲明必須駐留在同一個頭檔中?

為什麼模板類別實作和聲明必須駐留在同一個頭檔中?

Susan Sarandon
發布: 2024-12-26 07:31:12
原創
542 人瀏覽過

Why Must Template Class Implementations and Declarations Reside in the Same Header File?

在哪裡放置模板類實現和聲明

問題:

為什麼必須同時擁有實現和聲明在同一標頭中聲明模板類別文件?

答案:

要理解將模板類別的實作和聲明放在同一個頭文件中的重要性,請考慮模板實例化的過程。

編譯器需要存取完整的模板定義,而不僅僅是簽名,才能為每個模板實例化產生程式碼。這意味著模板函數的定義必須包含在頭文件中。

範例:

// header.h
template <typename T>
class MyTemplate {
public:
    MyTemplate(T n) { value = n; }
    void setValue(T n) { value = n; }
    T getValue() { return value; }
private:
    T value;
};

// source.cpp
#include "header.h"  // includes implementation

// code that uses the template
int main() {
    MyTemplate<int> obj(10);
    obj.setValue(5);
    cout << obj.getValue(); // outputs 5
}
登入後複製

在此範例中,MyTemplate 函數的實作包含在標題中。當模板被實例化時(例如,MyTemplate),編譯器可以立即根據完整的模板定義產生必要的程式碼。

透過將實作和宣告放在同一個標題中,您可以確保編譯器在編譯時擁有正確實例化每種特定類型的範本所需的所有資訊。

以上是為什麼模板類別實作和聲明必須駐留在同一個頭檔中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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