与C++中的模板类混淆

use*_*592 2 c++ templates class

我知道模板类定义如下:

template <class TYPE>
class cars{
   public:
   TYPE myCar;
}
Run Code Online (Sandbox Code Playgroud)

但我在这段代码遇到的地方:

template <class T>
class polynomialT {

    ...

}
************************************** 
class GFNUM2m {

...
}
**************************************
template class polynomialT<GFNUM2m>;
Run Code Online (Sandbox Code Playgroud)

最后一行对我来说模糊不清?谁知道怎么了?它是多项式T类的一个对象吗?(似乎不是因为它没有名称)是模板吗?(它似乎是重复的,因为它已被模板化一次)

K-b*_*llo 5

template class polynomialT<GFNUM2m>;
Run Code Online (Sandbox Code Playgroud)

是显式实例化模板类的要求polynomialTGFNUM2m包括其实例的所有非模板函数.

有些情况需要:

  • 当你想避免多个模板实例化(然后被链接器清除);
  • 当您想要确保即使对于那些未调用的(非模板)函数也可以实例化完整模板;
  • 如果要在.cpp文件中提供模板定义;