模板的宣告和實現為何要放在標頭檔案中?

2021-07-10 14:13:45 字數 517 閱讀 8010

源:

如何組織編寫模板程式

發表日期: 1/21/2003 12:28:58 pm

發表人: nemanja trifunovic

前言 常遇到詢問使用模板到底是否容易的問題,我的回答是:「模板的使用是容易的,但組織編寫卻不容易」。看看我們幾乎每天都能遇到的模板類吧,如stl, atl, wtl, 以及boost的模板類,都能體會到這樣的滋味:介面簡單,操作複雜。

我在5年前開始使用模板,那時我看到了mfc的容器類。直到去年我還沒有必要自己編寫模板類。可是在我需要自己編寫模板類時,我首先遇到的事實卻是 「傳統」程式設計方法(在.h檔案宣告,在.cpp檔案中定義)不能用於模板。於是我花費一些時間來了解問題所在及其解決方法。

本文物件是那些熟悉模板但還沒有很多編寫模板經驗的程式設計師。本文只涉及模板類,未涉及模板函式。但論述的原則對於二者是一樣的。

問題的產生

通過下例來說明問題。例如在array.h檔案中有模板類array:

// array.h

template

c 模板類 模板函式的宣告與定義應該放在標頭檔案裡

c 模板類 模板函式的宣告與定義應該放在標頭檔案裡,不要分開來寫類中函式的宣告與定義 比如在.h檔案裡宣告某個成員函式,在.cpp檔案裡定義該成員函式 這樣會導致連線錯誤。所應該將模板類 模板函式的定義與宣告寫在乙個.h檔案裡。比如在類的標頭檔案宣告了乙個函式 templatevoid fun t ...

c 模板類 模板函式的宣告與定義應該放在標頭檔案裡

如果函式模板按照普通的函式宣告放在標頭檔案的,定義放在。cpp檔案,會出現錯誤 模板函式宣告 定義 引用有什麼要注意的問題麼?mylib.h template t max v t v1,t v2 mylib.cpp include mylib.h template t max v t v1,t v2...

模板宣告與定義要放在同一檔案中?

通常情況下,你會在.h檔案中宣告函式和類,而將它們的定義放置在乙個單獨的.cpp檔案中。但是在使用模板時,這種習慣性做法將變得不再有用,因為當例項化乙個模板時,編譯器必須看到模板確切的定義,而不僅僅是它的宣告。因此,最好的辦法就是將模板的宣告和定義都放置在同乙個.h檔案中。這就是為什麼所有的stl標...