美文网首页
[初学C++]C++的拓展--函数重载

[初学C++]C++的拓展--函数重载

作者: Mr_Doer | 来源:发表于2018-12-06 01:02 被阅读8次

重载规则**

1)函数名相同。
2)参数个数不同,参数的类型不同,参数顺序不同,均可构成重载。
3)仅仅返回值类型不同则不可以构成重载

调用准则

1)严格匹配,找到则调用。
2)通过隐式转换寻求一个匹配,找到则调用。
print(1); // print(int)
print(1.1); // print(double)
print('a'); // print(int)
print(1.11f); // print(double)
编译器调用重载函数的准则
1.将所有同名函数作为候选者
2.尝试寻找可行的候选函数
3.精确匹配实参
4.通过默认参数能够匹配实参
5.通过默认类型转换匹配实参
6.匹配失败
7.最终寻找到的可行候选函数不唯一,则出现二义性,编译失败。
8.无法匹配所有候选者,函数未定义,编译失败。

重载底层实现

C++利用 name mangling(倾轧)技术,来改名函数名,区分参数不同的同名函数。
实现原理:用 v c i f l d 表示 void char int float long double 及其引用。
void func(char a); // func_c(char a)
void func(char a, int b, double c); //func_cid(char a, int b, double c)
一个函数,不能既作重载,又作默认参数的函数。当你少写一个参数时,系统
无法确认是重载还是默认参数。

函数重载和函数指针结合

函数重载与函数指针
当使⽤用重载函数名对函数指针进⾏行赋值时
根据重载规则挑选与函数指针参数列表⼀一致的候选者
严格匹配候选者的函数类型与函数指针的函数类型

函数指针基本语法
//方法⼀:
//声明一个函数类型
`typedef void (myTypeFunc)(int a,int b);
//定义一个函数指针
myTypeFunc myfuncp = NULL; //定义一个函数指针 这个指针指向函数的⼊口地址
//方法二:
//声明一个函数指针类型
typedef void (
myPTypeFunc)(int a,int b) ; //声明了一个指针的数据类型
//定义一个函数指针
myPTypeFunc fp = NULL; //通过函数指针类型 定义了一个函数指针
//方法三:
//定义一个函数指针变量
void (*myVarPFunc)(int a, int b);

函数重载总结

重载函数在本质上是相互独立的不同函数。
函数的函数类型是不同的
函数返回值不能作为函数重载的依据
函数重载是由函数名和参数列表决定的。

相关文章

  • [初学C++]C++的拓展--函数重载

    重载规则**1)函数名相同。2)参数个数不同,参数的类型不同,参数顺序不同,均可构成重载。3)仅仅返回值类型不同则...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • 30小时快速精通C++拾遗

    C语言不支持重载,为什么C++支持重载? C语言不支持函数重载,编译时函数名加上_或者其他标识C++为什么能够重载...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • 高质量C++编程指南 ----C++函数的高级特性

    8. C++函数的高级特性 对比于C 语言的函数,C++增加了重载(overloaded)、内联(inline)、...

  • 2.C++对C的扩展

    重载(overload) C++中,引用了函数重载的概念,函数名同名,参数列表不同形成重载。重载规则: 函数名相同...

  • Vue3源码中的TypeScript重载函数的作用

    TypeScript重载函数的作用案例 C++中的一个概念(百度百科): 函数重载一般指重载函数。 重载函数是函数...

  • 1.2.20_C++ 下标运算符 [] 重载

    C++ 重载运算符和重载函数 下标操作符 [] 通常用于访问数组元素。重载该运算符用于增强操作 C++ 数组的功能...

  • Geekband C++ 第五周

    概述 C++模板简介 函数模板 C++类模板 操作符重载 泛型编程 容器

  • Callback / Callable 类型

    重载函数,和php的伪重载函数 重载函数a. c++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的...

网友评论

      本文标题:[初学C++]C++的拓展--函数重载

      本文链接:https://www.haomeiwen.com/subject/jmwgcqtx.html