第一个知识点:函数模板。在学习之前先说个例子,假如我先在要定义一个函数,可以将两个参数的int类型值进行互换。如果这时我想交换两个char型值,两个long类型或是两个double类型呢,是不是要一个一个的创建呢?
函数模板很好的解决了这一问题,首先先看个示范。
上面的注释部分是普通定义函数的时候使用的交换方法,下面运行的就是我们这里所要学习的函数模板,首先模板的第一行必须使用template <typename XXX>,其中XXX部分就是你自己定义的随机类型,比如逆向设置为AnyType代替我这里的“T”也是可以的,一般情况下为了方便使用T来代替任意类型的意义,当然anytype也是可以的,显而易见呗!下面的就是简单的交换了不再赘述。
在C++98中也是有这样的模板的,但是typename那个标识符可以换做class,但是是在一定情况的。
这里要说一下,因为我是直接定义函数,然后再调用主函数的,所以要注意的是,如果定义函数在主函数后,预声明的时候要加上这里的第一行表示是一个模板函数,不然调用的时候会出错。
第二个知识点:重载函数模板。
上一次学到了重载的相关知识,那么模板固然也是可以重载的,这是一个实例。
这里各位要注意了我是用的数组作为的参数,也是可以使用指针的,这里可以非常明显的看出来,重载的模板也是可以修改默认数值的,看这里的第二个change模板函数,最后使用了一个n=1的默认数值,而下面调用的时候很显然我没有带入实际参数。这里各位可以参考一下。不知道,各位对于数组和指针之间巧妙的关系是否有些混淆,小编这里也是在摸索阶段,有什么不太了解的也希望各位给予分享。
好了,今天的分享就到这里了,有什么问题可以私聊哟!