概述
函数的重载 overload
和模板Template
- 重载
在C++ 里面,两个函数可以有同样的名字,但前提是他们的参数不同:数量不同 或者 类型不同。
上面的例子中,两个函数都叫operare
,一个是两个int
的参数,一个是两个double
的参数,当我们调用函数的时候,编译器根据你传入的参数自动确定调用哪个参数
第一个调用int
的函数,作乘积运算
第二个调用double
的函数,作除法运算
在这里其实不算函数重载,两个函数的定义是不一样的,其实是两个函数,他们具有不同的功能,只是恰好拥有同样的名字而已。
- 函数模板
函数重载的话,函数必须有相同的定义
这里定义了两个同样操作的函数,只是参数类型不同,这样我们就可以对不同类型的对象进行加法运算,但是这样写有点费事繁琐啊。
C++可以用通用模板来定义上面的两个函数。首先定义一个模板,然后实例化这个模板。
注意这个调用的格式:模板名<参数类型>(参数1,参数2)
编译器会把所有的SomeType
替换成int
使用 T 而不是SomeType 作为通用类型,简洁明了,也是常用写法。
有时候编译器能自动推断出参数的类型,不用在尖括号里定义,前提是两个参数的类型是一样的。上面的例子可以简写为:
省略了<int>
和<double>
,但是两个参数类型不一样的话编译器可能就没法自动推断了。
模板是一个很强大的功能,可以用不同模板类型的参数,或者非模板类型的参数。
这个例子,两个参数的类型是不一样的,而且在实例化的时候使用了自动推断类型,不然就应该像右图那样写<int,double>(10,10.0)
还可以混合使用模板类型和标准类型的参数
原因是模板参数的值在编译时候就定好了,不是在调用的时候动态赋值,这里是两个实例,一个乘2,一个乘3,那个int
类型的传入constant
才可以,不能是个变量。
阅读原文
转载于:https://www.cnblogs.com/springbrotherhpu/p/10918267.html
最后
以上就是落寞宝马为你收集整理的函数的重载和模板的全部内容,希望文章能够帮你解决函数的重载和模板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复