8_Function template

Function template

你设计一个函数, 比如现在要比大小

这 A 和 B 来比, 怎么样比呢 ? 用小于号 < 来比, 至于 A 和 B 是整数还是 long 还是字符串都没有关系.

既然这样, 我们就把这个函数设计成一个 function template.

语法就像图中黄色部分一样, 告诉编译器, T 是什么, typename, 这个关键字 class 在这里可以改成 typename.

这里的使用方法, 对比之前的类模板还要简单一些

函数模板在使用的时候不必指明数据类型

stone r1(2, 3), r2(3, 3), r3;
r3 = min(r1, r2);

因为函数模板在使用的时候, 一定是去调用它, 调用的时候一定要放参数, 于是编译器就做实参推导, 编译器可以根据你调用时候的参数去推出这个 T 是什么类型.

编译器推出来 T 是什么之后, 这个例子是推出来两个参数是 stone 类型, 然后看 stone 能不能比大小, 然后编译器再去找, 看看 stone 这个类有没有写小于这一个动作

模板的编译, 编出来也只是一个半成品. 真正使用的时候, 会再编译一次.