5 函数重载(Overroad)

函数重载概念

1 函数重载概念

函数重载(Function Overload)

用同一个函数名定义不同的函数

当函数名和不同的参数搭配时函数的含义不同

2 函数重载的判断标准

/*

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

参数个数不同

参数类型不同

参数顺序不同

*/

3 函数返回值不是函数重载的判断标准

实验1:调用情况分析;实验2:判断标准

//两个难点:重载函数和默认函数参数混搭 重载函数和函数指针

/*

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 c = 0;

c = func(1);

printf("c = %d\n", c);

c = func(1, 2);

printf("c = %d\n", c);

c = func("12345");

printf("c = %d\n", c);

printf("Press enter to continue ...");

getchar();

return 0;

}

*/

函数重载的调用准则

/*

编译器调用重载函数的准则

将所有同名函数作为候选者

尝试寻找可行的候选函数

精确匹配实参

通过默认参数能够匹配实参

通过默认类型转换匹配实参

匹配失败

最终寻找到的可行候选函数不唯一,则出现二义性,编译失败。

无法匹配所有候选者,函数未定义,编译失败。

*/

/*

函数重载的注意事项

重载函数在本质上是相互独立的不同函数(静态链编)

重载函数的函数类型是不同的

函数返回值不能作为函数重载的依据

函数重载是由函数名和参数列表决定的。

*/

函数重载是发生在一个类中里面

函数重载遇上函数默认参数

//当函数默认参数遇上函数重载会发生什么

/*

int func(int a, int b, int c = 0)

{

return a * b * c;

}

int func(int a, int b)

{

return a + b;

}

//1个参数的允许吗

int func(int a)

{

         return a + b;

}

int main()

{

int c = 0;

c = func(1, 2); // 存在二义性,调用失败,编译不能通过

printf("c = %d\n", c);

printf("Press enter to continue ...");

getchar();

return 0;

}

*/

函数重载和函数指针结合

/*

函数重载与函数指针

当使用重载函数名对函数指针进行赋值时

根据重载规则挑选与函数指针参数列表一致的候选者

严格匹配候选者的函数类型与函数指针的函数类型

*/

/*

int func(int x) // int(int a)

{

return x;

}

int func(int a, int b)

{

return a + b;

}

int func(const char* s)

{

return strlen(s);

}

typedef int(*PFUNC)(int a); // int(int a)

int main()

{

int c = 0;

PFUNC p = func;

c = p(1);

printf("c = %d\n", c);

printf("Press enter to continue ...");

getchar();

return 0;

}

*/

c++—— 函数重载(Overroad)的更多相关文章

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

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

  2. Javascript函数重载,存在呢—还是存在呢?

    1.What's is 函数重载? );//Here is int 10 print("ten");//Here is string ten } 可以发现在C++中会根据参数的类型 ...

  3. javascript 函数重载 overloading

    函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function over ...

  4. 01-C#入门(函数重载、委托)

    函数的重载 相对委托,是比较好理解的. 涉及一个概念:函数签名.函数签名包括函数的名称和参数,而函数重载:就是使用相同的名称和不同的参数(参数类型.传递方式[传值或引用])来实现的.而不能声明相同的函 ...

  5. C++函数重载和函数模板

    1.函数重载 这是小菜鸟写的一个例子. 函数重载应该注意以下几点: 1.1重载函数有类似的功能: 1.2只能以参数的类型(形参个数和类型)来重载函数, int max(int a,int b);flo ...

  6. JS魔法堂:函数重载 之 获取变量的数据类型

    Brief 有时我们需要根据入参的数据类型来决定调用哪个函数实现,就是说所谓的函数重载(function overloading).因为JS没有内置函数重载的特性,正好给机会我们思考和实现一套这样的机 ...

  7. 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板

    [源码下载] 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板 作者:webabcd 介绍不可或缺 Windows Native 之 C++ ...

  8. c语言中,既然不支持函数重载,那么printf算怎么回事?在c语言中,它不就是被重载了吗?

    这个问题问的不错.其实printf不是重载,c语言不支持函数重载 这句话是对的.printf函数是通过变长参数表实现的.你可以查看一下printf的函数原型声明.printf函数的实现在不同的机器上是 ...

  9. JavaScript模拟函数重载

    JavaScript是没有函数重载的,但是我们可以通过其他方法来模拟函数重载,如下所示: <!DOCTYPE html> <html> <head> <met ...

随机推荐

  1. mysql安装配置、主从复制配置详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8213723.html 邮箱:moyi@moyib ...

  2. Django基础必备三神装(HttpResponse、render,、redirect)

    在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...

  3. mysqli返回受影响行数

    参考链接:http://php.net/manual/en/mysqli.affected-rows.php /* update rows */ $mysqli->query("UPD ...

  4. web.xml里welcome-file欢迎页面配置及web.xml简介

    web项目欢迎页面的配置 <welcome-file-list> <welcome-file>/WEB-INF/index.html</welcome-file> ...

  5. 普通用户查看Oracle参数的值

    create or replace function get_param(p_name in varchar2)return varchar2as  l_param_type number; l_in ...

  6. jsp到java后台中文乱码问题

    ---首先描述一下我的情况,我的jsp    设置了编码格式 <%@ page language="java" contentType="text/html; ch ...

  7. redis介绍(7)高级用法

    redis的过期策略以及内存淘汰机制 分析:这个问题其实相当重要,到底redis有没用到家,这个问题就可以看出来.比如你redis只能存5G数据,可是你写了10G,那会删5G的数据.怎么删的,这个问题 ...

  8. linux安装memcached

    一:为什么要使用memcached 瓶颈:互联网发展,特别在web2.0兴起之后,传统数据库开始出现瓶颈 1:对数据库的高并发读写 2:对海量数据库的处理(海量数据查找)memcache 是高性能的分 ...

  9. Oracle 补丁那些事儿(PS、PSU、CPU、SPU、BP、DBBP…)

    当前ORACLE数据库提供两种方式的补丁一种是主动的Proactive Patches和另一种被动的Reactive Patches,其中Reactive Patches是指过去的ONE-OFF Pa ...

  10. Struts-config.xml配置文件《action-mappings》元素的详解

    原文地址:http://blog.163.com/sara1124@126/blog/static/11291097020105125537114/ action-mappings 该元素用于将Act ...