對於模板函數和模板類來說,其參數類型也是被參數化的,如:
template <typename T>
bool compare(const T v1, const T v2)
{
return v1 - v2;
}
其中的參數v1和v2爲T,只有在運行時(確切的說只有模板代碼被編譯時)纔會確定,所以該文件不能被獨立編譯(將該模板函數單獨編譯到一個文件中如:compare.x)成一個目標文件(.obj文件)。因此 Mricosoft C++ 中 STL 庫的模板類及模板方法只能以源文件的形式提供給用戶(程序員)使用,例如vector模板類的源文件爲vector的文件(沒有後綴名),當我們在程序中使用到vector類時,我們通過模板參數提供了類型信息。此時,c++編譯器就可以將模板代碼(vector的源碼)實例化。