博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++函数的升级下_5
阅读量:7015 次
发布时间:2019-06-28

本文共 2259 字,大约阅读时间需要 7 分钟。

一。重载(Overload)

  1.同一个标识符在不同的上下文有不同的意义

  如:“洗”不同的含义

    - 洗衣服、洗脸、洗脑

  如:“play”和不同的单词搭配后不同的含义

    -play chess, play piano

  2.函数重载(Function Overload)

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

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

      int func(int x)

      int func (int a, int b )

      int func(const char* s )

  3.函数重载至少满足下面一个条件

    a。参数个数不同

    b. 参数类型不同

    c。参数顺序不同

#include 
#include
int func(int x){ return x;}int func(int a, int b){ return a + b;}int func(const char* s){ return strlen(s);}int func(int a, const char* s){ return a;}int func(const char* s, int a){ return strlen(s);}int main(int argc, char *argv[]){ int c = 0; c = func("ab", 1); printf("c = %d\n", c); printf("Press enter to continue ..."); getchar(); return 0;}

  4.函数默认参数遇上函数重载会发生什么?

#include 
#include
int func(int a, int b, int c = 0){ return a * b * c;}int func(int a, int b){ return a + b;}int main(int argc, char *argv[]){ int c = 0; c = func(1, 2); // 存在二义性,调用失败,编译不能通过 printf("c = %d\n", c); printf("Press enter to continue ..."); getchar(); return 0;}

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

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

  b.尝试寻找可行的候选函数

    #精确匹配实参

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

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

  c.匹配失败

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

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

6.函数重载的注意事项

  #重载函数在本质上是相互独立的不同函数

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

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

7.下面程序中哪个函数将被调用

  

#include 
#include
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 argc, char *argv[]){ int c = 0; PFUNC p = func; c = p(1); printf("c = %d\n", c); printf("Press enter to continue ..."); getchar(); return 0;}

  输出结果C = 1

7.函数重载与函数指针

  #当使用重载函数名与函数指针进行幅值时

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

    b.严格匹配候选者的函数类型和函数指针的函数类型

二。C++和C的相互调用

  1.在项目中融合C++和C代码是实际工程中不可避免的

  2.虽然C++编译器能够兼容C语言的编译方式,但C++编译器会优先使用C++的方式进行编译。

  3.利用extern关键字强制让C++编译器对代码进行C方式编译

   例:  extern"include"add.h""|

三。小结

  1.函数重载是C++对C语言的一个重要升级

  2.函数重载通过函数参数列表区分不同的同名函数

  3.函数的返回值类型不是函数重载的依据

  4.extern关键的关键是能够实现C和C++的相互调用。

转载于:https://www.cnblogs.com/lvxiaoning/p/7504378.html

你可能感兴趣的文章
C#演示如何使用 XML 将源码编入文档
查看>>
深入理解计算机系统11——网络编程
查看>>
为什么说甲骨文裁员也属无奈之举?
查看>>
LeetCode:Word Pattern
查看>>
重载模板的顺序
查看>>
keil 编译后 flash 和 ram 占用情况
查看>>
java Jsoup爬取静态网站
查看>>
css选择器
查看>>
emacs使用http代理打开
查看>>
IOException: Sharing violation on path *****
查看>>
redhat python笔试题
查看>>
Silverlig“.NET研究”ht 2.5D RPG游戏技巧与特效处理:(三)动态光影
查看>>
字符串
查看>>
Vue 项目中使用less
查看>>
2018-2019-1 20165303 《信息安全系统设计基础》第七周学习总结
查看>>
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)
查看>>
如何將CMOS影像以RGB16的方式存入SDRAM? (SOC) (DE2-70) (TRDB-D5M) (TRDB-LTM)
查看>>
中国程序员容易发音错误的单词
查看>>
Android通知的基本用法
查看>>
window平台如何搭建Mysql集群
查看>>