1. 程式人生 > >模板的宣告和定義一般放一起

模板的宣告和定義一般放一起

之所以最初使用模板時,像使用類那樣分別在.h中宣告、在.cpp中定義,是因為程式設計師在使用模板類時將模板類視為某種資料型別。這是錯誤的。所謂型別參量化(parameterized types)這樣的術語導致了這種誤解。模板當然不是資料型別,模板就是模板,恰如其名。編譯器使用模板,通過更換模板引數來建立資料型別。這個過程就是模板例項化(Instantiation)。從模板類建立得到的型別稱之為特例(specialization)。模板例項化取決於編譯器能夠找到可用程式碼來建立特例(稱之為例項化要素,point of instantiation)。要建立特例,編譯器不但要看到模板的宣告,還要看到模板的定義。模板例項化過程是遲鈍的,即只能用函式的定義來實現例項化。