关于重载二义性

原创 2015年07月06日 21:43:55

C++编译器只根据函数参数表,也就是参数类型和个数进行重载版本的调用匹配,函数返回值不顶用

另外,函数默认参数时会产生二义性,代码必须这样调用才是对的。


#include <iostream>
using namespace std;

int max(int a,int b)
{
	return a<b?b:a;
}

int max(int a,int b,int c=0)
{
	cout<<"c == "<<c<<endl;
	return a<b?b:a;
}

int main()
{
	max(5,3,1);
	return 0;
}

否则就会有如下编译错误|:



版权声明:欢迎转载,注明出处就好!如果不喜欢请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步!!

相关文章推荐

一个隐式类型转换引起的重载函数二义性错误

介绍因为隐式类型转换而引起的一个非常隐晦的错误 下述代码的目的是设计一个简单的类A,希望A的对象在标准输出和文件输出时的表现不同 #include #include using names...

::全局作用

直接上代码: #include using namespace std; int zhou=16; int main() { int zhou=12; //局部变量 if (true...

int i=1,j=2; int k=i+++j;

因为运算符优先级为++大于+ 所以第二条语句应该是k=(i++)+j 分解为下面的步骤 1.i+j;(由于i++是先使用i值在表达式中进行运算,再自加1) 2.k=第1步的结果3; 3.i+...

函数重载导致的二义性

函数重载主要是一个匹配问题,分为精准匹配,提升匹配和类型转换匹配三种:精准匹配#include #include "string.h" using namespace std;void MyCout(...
  • yddj5
  • yddj5
  • 2016年12月22日 15:37
  • 116

C++为什么可以进行函数重载以及引起的二义性问题

关于C++中函数重载是在C语言基础上的一大特色,不过有好也有坏,虽然C++的函数重载大大方便了编程人员,但是却有时候使用不当会引起问题,最典型的就是函数重载的二义性问题。首先我们知道C++函数重载的条...

C++函数重载过程中的二义性和类型转换

【学习于C语言中文网,请勿转载】 发生函数调用时编译器会根据传入的实参的个数、类型、顺序等信息去匹配要调用的函数,这在大部分情况下都能够精确匹配。但当实参的类型和形参的类型不一致时情况就会变得稍微复...

C/C++日常学习总结(第三篇)不能重载的运算符和不同基类继承产生的二义性

1.作用域

解决二义性问题.rar

  • 2008年10月21日 19:34
  • 323KB
  • 下载

C++ 二义性问题

二义性问题 1.在继承时,基类之间、或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性——同名二义性。 2.当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中...
  • whz_zb
  • whz_zb
  • 2011年10月04日 00:20
  • 11087

C/C++日常学习总结(第六篇)多基派生引起的虚函数访问二义性问题&重载,覆盖,隐藏的区别

1.构造函数和析构函数的调用顺序? 析构函数为什么要虚拟?
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于重载二义性
举报原因:
原因补充:

(最多只允许输入30个字)