第26章总结
本节阅读量:模板允许我们使用类型作为占位符来编写函数或类,以便我们可以使用不同的类型来实例化相同代码的函数或类。
所有模板函数或类都必须以template参数声明开头,该声明告诉编译器下面的函数或类是模板函数或类。在模板参数声明中,指定模板类型参数或非类型参数。模板类型参数只是占位符类型,通常命名为T、T1、T2或其他单字母名称(例如S,U)。非类型参数通常是整型,但可以是函数、类对象或成员函数的指针或引用。
拆分模板类定义和成员函数定义不像普通类那样简单——不能将类的成员函数定义放在.cpp文件中。通常最好将它们全部保存在头文件中,成员函数定义位于类的下面。
当我们想要覆盖特定类型的模板化函数或类的默认行为时,可以使用模板特化。如果覆盖所有类型,则称为完全特化。类还支持部分特化,其中只有一些模板参数是特化的。函数不能部分特化。
C++标准库中的许多类都使用模板,包括std::array和std:∶vector。模板通常用于实现容器类,因此容器可以编写一次,并与任何适当的类型一起使用。
