关闭

关于重载二义性

751人阅读 评论(0) 收藏 举报
分类:

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;
}

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



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

关于C++中函数重载是在C语言基础上的一大特色,不过有好也有坏,虽然C++的函数重载大大方便了编程人员,但是却有时候使用不当会引起问题,最典型的就是函数重载的二义性问题。首先我们知道C++函数重载的条件,以及C++中为什么可以函数重载,这样才可以避免C++函数重载中的二义性问题。 C++函数重载的条...
  • Loving_Forever_
  • Loving_Forever_
  • 2016-05-21 22:09
  • 1940

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

【学习于C语言中文网,请勿转载】 发生函数调用时编译器会根据传入的实参的个数、类型、顺序等信息去匹配要调用的函数,这在大部分情况下都能够精确匹配。但当实参的类型和形参的类型不一致时情况就会变得稍微复杂,例如函数形参的类型是int,调用函数时却将short类型的数据交给了它,编译器就需要先将shor...
  • czg13548930186
  • czg13548930186
  • 2017-07-25 11:12
  • 650

inline, 默认参数,函数占位符,函数重载

inline专题C++中的const常量可以替代宏常数定义,如:const int A = 3; #define A 3C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!) C++中推荐使用内联函数替代宏代码片段,C++中使用inline关键字声明内联函数。需要注意的是...
  • lishuhuakai
  • lishuhuakai
  • 2015-05-20 22:38
  • 984

C++构造函数重载以及默认参数引起的二义性

大家都知道当我们声明一个类时,系统会提供一个默认构造函数。当我们需要提供参数进行对类数据成员进行初始化时,就需要对类的带参构造函数进行重载。同时,如果我们需要调用默认构造函数进行类数据成员的初始化时,还需要对类的默认构造函数进行重载。也许就在这一块,我们很多人都遇到过同样的错误: 当我们给出一个...
  • zhangyongjun_2012
  • zhangyongjun_2012
  • 2013-06-11 19:13
  • 3084

多重继承的二义性以及解决方法

//多重继承的二义性以及解决方法 //学习目的:了解类的继承原理及多重继承二义性的解决方法。 /* //本程序代码来源《MFC权威剖析》p68 */ ////////////////////第一种多重继承的二义性//////////////// class Employee { pu...
  • windows_nt
  • windows_nt
  • 2013-02-27 09:31
  • 5361

C++之引用&重载

c++的引用和函数重载笔记以及代码示例
  • Jackiellx
  • Jackiellx
  • 2016-10-15 01:21
  • 1039

二义性 消除左递归

书是龙书 编译器中常用的方法可以分为自顶向下和自底向上的。一个是从语法分析树的顶部开始向底部构造语法分析树,一个则是从叶子节点开始,逐渐向根结点构造,这两种分析方法中,语法分析器的输入总是照着从左向右。   二义性:如果一个文法可以为某个句子生成多棵语法分析树,那么他就是二义性的。 例如例...
  • hhooong
  • hhooong
  • 2015-06-29 20:39
  • 1032

函数重载导致的二义性

函数重载主要是一个匹配问题,分为精准匹配,提升匹配和类型转换匹配三种:精准匹配#include<iostream> #include "string.h" using namespace std;void MyCout(long n) { cout <&...
  • yddj5
  • yddj5
  • 2016-12-22 15:37
  • 180

C++虚基类解决二义性问题及执行结果分析

由于C++中允许多继承,所以会出现二义性问题:在多个派生类中,定义了相同名字的方法,这时再在main函数里面通过基类调用该方法时,编译器就犯难了。因为它不知道你到底是想用哪一个派生类里面的方法。 那么,现在又有了一个问题:假如有两个派生类DerivedA和DerivedB,它们的同名方法一个有参...
  • liu765023051
  • liu765023051
  • 2013-03-15 18:55
  • 3509

C++:多继承中的二义性问题

在派生类中对基类成员的访问应该是唯一的.但是,在多继承情况下,可能造成对基类中某个成员的访问出现了不一致的 情况,这时就称对基类成员的访问产生了二义性. 原因之一:    派生类在访问基类成员函数时,由于基类存在同名的成员函数,导致无法确定访问的是哪个基类的成员函数,因此出现...
  • lhc2207221755
  • lhc2207221755
  • 2014-02-28 20:30
  • 2617
    个人资料
    • 访问:1013703次
    • 积分:15080
    • 等级:
    • 排名:第904名
    • 原创:421篇
    • 转载:476篇
    • 译文:6篇
    • 评论:251条
    博客专栏
    友情链接
    文章分类
    最新评论