一、C++中的函数重载

什么是函数重载?

我的理解是:

(1)用一个函数名定义不同的函数;

(2)函数名和不同参数搭配时函数会有不同的含义;

举例说明:

 #include <stdio.h>
#include <string.h> int func(int x)
{
return x;
} int func(int a, int b)
{
return a+b;
} int func(const char* s)
{
return strlen(s);
} int main(int argc,char* argv[])
{
printf("func(3) = %d\n",func());
printf("func(5,6) = %d\n",func(,));
printf("func(\"file cpp\") = %d\n",func("file cpp")); return ;
}

运行结果:

分析:

函数的重载在使用时,会根据传入的参数去选择执行对应的函数

总结:函数重载至少要满足下面的一个条件

(1)参数个数不同
(2)参数类型不同
(3)参数顺序不同
 
二、C++中的函数默认参数
举例说明
 #include <stdio.h>

 int func(int a, int b = )
{
return (a+b);
} int main(int argc,char* argv[])
{
printf("func(3) = %d\n",func());
printf("func(3,2)= %d\n",func(,)); return ;
}

运行结果:

 
二、当函数重载与默认参数同时出现时
在刚刚开始学习的时候,分开学习函数重载和默认参数,两种情况都理解了。但是,突然想到如果这两个同时出现会会出现一个什么样的结果呢?
实例代码:
 #include <stdio.h>

 int func(int a)
{
return (a);
} int func(int a, int b = )
{
return (a+b);
} int main(int argc,char* argv[])
{
printf("func(3) = %d\n",func());
printf("func(3,2)= %d\n",func(,));
printf("test for temp.cpp\n");
return ;
}

写完了后,就在想代码执行后,到底会调用哪一个函数呢?

结果:

编译出错,错误信息:error: call of overloaded ‘func(int)’ is ambiguous printf("func(3)  = %d\n",func(3));
 
分析:
在C++的编译器中,如果出现了函数重载和函数带有默认参数时,编译是会出错的。
 
总结:
由于C++的语言特性,与C相比多了很多的特性,但是在这些的特性中又会存在一个相互冲突的部分,函数重载与函数默认参数就是其中一个。

C++函数重载遇到了函数默认参数情况的更多相关文章

  1. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  2. C++的函数重载和main函数之外的工作

    今天被问到一个C++的函数重载问题,一下子没反应过来,这种基础的问题竟然忘记了,以下记录一下这些忘记的内容.     函数重载 函数重载的定义是:在相同的作用域中,如果函数具有相同名字而仅仅是形参表不 ...

  3. 函数重载(overload)和函数重写(override)

    1. 前言: 在C++中有两个非常容易混淆的概念,分别是函数重载(overload)和函数重写(overwirte).虽然只相差一个字,但是它们两者之间的差别还是非常巨大的. 而通过深入了解这两个概念 ...

  4. Python之在函数中使用列表作为默认参数

      本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数.   我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使 ...

  5. python函数中的位置参数、默认参数、关键字参数、可变参数区别

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...

  6. Python在函数中使用列表作为默认参数

    在学习中遇到的Python的一个坑,那就是使用列表作为默认参数. 我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使用列表作为函数的默认参 ...

  7. 【C++】多态性(函数重载与虚函数)

    多态性就是同一符号或名字在不同情况下具有不同解释的现象.多态性有两种表现形式: 编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定. ...

  8. C++ 函数声明中指定,默认参数

    C++ 在声明函数的时候,如果指定了,参数的默认值,再调用函数的时候可以省略后面的参数. 如果调用函数写上的参数,但是不全.参数列表后面的使用默认值.如下例子,一看就清楚了. #include < ...

  9. 函数重载不仅仅是看其参数,还要看是否有const修饰

    比如QString有两个函数,可以堂而皇之的存在,原因就在于有了const修饰以后,编译器不把两个函数当作同一个函数名了: QChar * data() const QChar * data() co ...

随机推荐

  1. poj 1328 Radar Installation【贪心区间选点】

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  2. C基础

    一.关于整型数据 1.整型常量:十进制数前面可以加+.-号,但是不能有前缀0 八进制数:必须以前缀0开头,不是O.不能加负号(-),否则不能识别. 十六进制数:前缀必须为0x或者0X.不能加负号(-) ...

  3. OpenRisc-42-or1200的ALU模块分析

    引言 computer(计算机),顾名思义,就是用来compute(计算)的.计算机体系结构在上世纪五六十年代的时候,主要就是研究如何设计运算部件,就是想办法用最少的元器件(那时元器件很贵),最快的速 ...

  4. struts 2学习笔记—浅谈struts的线程安全

    Sruts 2工作流程: Struts 1中所有的Action都只有一个实例,该Action实例会被反复使用.通过上面Struts 2 的工作流程的红色字体部分我们可以清楚看到Struts 2中每个A ...

  5. Word2007怎样从随意页開始设置页码 word07页码设置毕业论文

    Word2007怎样从随意页開始设置页码 word07页码设置毕业论文 页開始设置页码. 一.插入页码 插入→页眉和页脚→页码→页面底端→普通数字3 说明:被→分隔的内容分别为选项卡,模块,命令but ...

  6. cubieboard变身AP 分类: ubuntu cubieboard 2014-11-25 14:04 277人阅读 评论(0) 收藏

    加载bcmdhd模块:# modprobe bcmdhd 如果你希望开启 AP 模式,那么:# modprobe bcmdhd op_mode=2 在/etc/modules文件内添加bcmdhd o ...

  7. [RxJS] Combination operator: combineLatest

    While merge is an OR-style combination operator, combineLatest is an AND-style combination operator. ...

  8. RGB的三维模型与渐变色-颜色系列之一

    一.前言 以下与颜色相关的日志记录了俺学习颜色的有关容,限于编写时的水平,难免存在缺点与错误,希望得到朋友.同行和前辈的指教,非常感谢.1.  RGB的三维模型与渐变色-颜色系列之一2.  <颜 ...

  9. Swift学习笔记八:枚举

    1. 枚举语法      1)枚举的定义 使用enum关键词而且把它们的整个定义放在一对大括号内: enum SomeEumeration { // enumeration definition go ...

  10. kissy

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...