面向对象编程 (OOP
)和泛型编程都能处理 在编写程序不知道类型的情况。不同之处在于 ,OOP
能处理类型在程序运行之前都未知的情况,而泛型编程中,在编译时就能获知类型了。而模板是C++泛型编程的基础。
C++是一门强类型语言,所以无法做到像动态语言(python javascript
)那样子,编写一段通用的逻辑,可以把任意类型的变量传进去处理。泛型编程弥补了这个缺点,通过把通用逻辑设计为模板,摆脱了类型的限制,提供了继承机制以外的另一种抽象机制,极大地提升了代码的可重用性。
函数模板
如果希望编写一个函数比较两个值,在实际中由于比较的类型不知道,可以通过函数重载的方式写多个同名的函数,编译器会根据不同的调用参数选择对应的函数执行。但是这样编码很麻烦。我们可以通过定义一个通用的函数模板,来简化。
1 | template <typename T> |
模板有关的其他知识
模板偏特化
模板全特化
实参推断