显式实例化

显式实例化可以创建模板类或函数的实例化,而不会实际使用时在代码。 由于这是有用,在创建使用模板的入库 (.lib) 文件,实例化的模板定义不放置到对象 (.obj) 文件。

以下显式实例化 int 变量和六项的 MyStack :

template class MyStack<int, 6>;

此语句创建 MyStack 的实例化不保留对象的任何存储;代码的所有成员生成。

以下显式实例化仅构造函数成员函数:

template MyStack<int, 6>::MyStack( void );

函数模板可以通过变量将它们显式实例化特定类型参数,如在 函数模板实例化的示例所示。

Microsoft 专用

可以使用 extern 关键字防止成员的自动实例化。 例如:

extern template class MyStack<int, 6>;

同样,可以标记特定成员作为外部和未实例化如下所示:

extern template MyStack<int, 6>::MyStack( void );

备注

在专用化的 extern 关键字仅适用于成员函数定义在类体外部。功能定义在类声明中称为 " 内联函数和始终实例化。

请参见

参考

函数模板