重载函数和函数模板小笔记
不必定义不同名称的函数,而是利用重载函数,就可以实现对不同类型的数据进行相似操作的目的。编译器根据实参与形参的类型和个数,进行最佳匹配,来确定调用哪个函数,而与函数的返回类型无关。重载机制体现了面向对象的程序设计中类的多态性。
有时候,使用重载函数还是不能达到最简洁的效果,比如,当几个函数只有返回类型和参数类型不同,而功能完全相同时,如果可以只用一段代码而不是定义几个重载函数来完成时,代码的复用性和开发效率会更高。这种情况可以用函数模板实现。编译器会根据调用函数时传入的实参类型,来确定函数模板的类型参数是什么类型,之后,编译器会根据判断结果生成一个符合要求的函数。调用语句其实调用的是编译器利用函数模板生成的具有相应参数类型的函数。
补充:const关键字也可以参与对重载函数的区分。例如,void func();与void func() const;它们就是重载函数。