1. 什么是模板
C++特性之一,批量生成代码的手段。
2. 模板有什么应用?
1. 泛型编程
例如:std::vector
2. 模板元编程
利用模板的特化等特性,在编译期计算出结果。
例如:
3.模板实参类型推导
虽然模板这么牛逼,但是今天我们不讲上述两个特性,我们讲一下细节:给模板填入一个类型时,模板是如何推导出实参(T)的类型。
1.实参确定的几种方式
编译期间,编译器一定会确定每个模板实参T的类型,一般开发者指定类型有以下几种方式。
- 显式指定,如图 fun(15); 直接指定T的类型为int,不过我们一般不这么做。
- 隐式指定,通过给类型为T的参数传实参,来确定T的类型,如图: fun(15); 因为15会被编译期认为是int,所以T也为int类型。
- 隐式指定,通过被赋值的左值来确定。如图。
这篇博客要说的就是后两种隐式指定确定T的类型,可能有人觉得,不就是直接把类型替换吗,有啥好