【C++语言的设计和演化】重载

来源:互联网 发布:部落冲突野猪升级数据 编辑:程序博客网 时间:2024/05/06 16:56

重载

重载的歧义控制,在匹配参数过程中,只能接受非缩窄的转换。

C++区分的5中“匹配”:

1) 匹配中不转换或者只使用不可避免的转换(例如从数组名到指针,函数名到函数指针,Tconst T

2) 整数提升的匹配(charintshortint以及它们对应的unsignedfloatdouble

3) 标准转换的匹配(intdoublederived* base*, unsigned intint

4) 用户定义转换的匹配(构造函数和转换操作)

5) 使用了在函数声明里的省略号....的匹配

如果存在两个最好匹配,这个调用就是有歧义的,产生一个编译错误。对多于一个参数的调用,一个函数想要被选中,那么它至少在某一个参数上比其他任何函数匹配的都更好,而对每个参数都至少与其他函数匹配的同样好。