函式模板和類模板成員函式的定義通常放在標頭檔案中

2022-04-13 08:22:34 字數 581 閱讀 8748

今天寫程式時,將函式模板的宣告和定義分開放在標頭檔案和.cpp檔案中,發生了連線錯誤。上網檢視資料和檢視《c++ primer 5》p582發現,:

函式模板和類模板成員函式的定義通常放在標頭檔案中,除非使用export關鍵字實現分離。

下面是《c++ primer 5》的原文(p582):

關鍵概念:模板和標頭檔案

模板包含兩種名字:

1.那些不依賴於模板引數的名字。

2.那些依賴於模板引數的名字。

當使用模板時,所有不依賴於模板引數的名字都必須是可見的,這是由模板的提供者來保證的。而且,模板的提供者必須保證,當模板被例項化時,模板的定義,包括類模板的成員的定義,也必須是可見的。

用來例項化模板的所有函式、型別以及與型別關聯的運算子的宣告都必須是可見的,這是由模板的使用者來保證的。

通過組織良好的程式結構,恰當使用標頭檔案,這些要求都容易滿足。模板的設計者應該提供乙個標頭檔案,包含模板定義以及在類模板或成員定義中用到的所有名字的宣告。模板的使用者必須包含模板的標頭檔案,以及用來例項化模板的任何型別的標頭檔案。

函式模板和類模板成員函式的定義通常放在標頭檔案中

今天寫程式時,將函式模板的宣告和定義分開放在標頭檔案和.cpp檔案中,發生了連線錯誤。上網檢視資料和檢視 c primer 5 p582發現,函式模板和類模板成員函式的定義通常放在標頭檔案中,除非使用export關鍵字實現分離。下面是 c primer 5 的原文 p582 關鍵概念 模板和標頭檔案...

類模板,模板類和函式模板,模板函式

單整數類 雙整數類 所以c艹跟其他強型別語言為我們提供了乙個所謂模版功能 變數型別 整數 類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。例子 1 template 2 class vector 3 使用這個vector模板就可以產生很多的class 類 vector vector ve...

成員函式模板

1 背景 參考資料 1 p218的條款45 運用成員函式模板接受所有相容型別,提出了如何使得自定義的智慧型指標支援隱式型別轉換的方法,其中用到的技巧就是使用成員函式模板。關於其詳細的原理,書中已經說的很清楚,只是在程式設計的過程中會遇到挫折,故在此記錄一下成功通過的編譯的 見下一章 2 templa...