章节目录

第26章总结

本节阅读量:

模板允许我们使用类型作为占位符来编写函数或类,从而用不同的类型实例化同一份函数或类代码。

所有模板函数或类都必须以template参数声明开头,该声明会告诉编译器后面的函数或类是模板。在模板参数声明中,可以指定模板类型参数或非类型参数。模板类型参数只是占位符类型,通常命名为T、T1、T2,或其他单字母名称(例如S、U)。非类型参数通常是整型,也可以是指向函数、类对象或成员函数的指针或引用。

拆分模板类定义和成员函数定义不像普通类那样简单——不能简单地将类的成员函数定义放在.cpp文件中。通常最好将它们全部保存在头文件中,并将成员函数定义放在类定义的下方。

当我们想要覆盖模板化函数或类在特定类型下的默认行为时,可以使用模板特化。如果覆盖所有模板参数,则称为完全特化。类还支持部分特化,即只特化其中一部分模板参数。函数不能部分特化。

C++标准库中的许多类都使用模板,包括std::array和std::vector。模板通常用于实现容器类,因此容器只需编写一次,就可以与任何合适的类型一起使用。


26.5 指针的部分模板特化

上一节

27.0 为什么需要异常机制

下一节


本节目录