C++重载
来源:互联网 发布:华为手机记录运动数据 编辑:程序博客网 时间:2024/06/05 00:30
1、什么是函数重载?
在同一个作用域中(前提),函数名相同,参数表不相同的函数(条件);构成重载关系。 重载与函数的返回赖幸和参数名无关,只与参数的个数、类型和顺序有关。
2、重载解析
1)根据调用函数时所提供的实参,按照类型匹配的原则,找到相应的重载版本的过程。类型无法完全匹配时,char的整型提升为int;解析的时候是在类型安全的前提下,优先选择工作量小的进行的。2)重载原理:c++中的重载是通过换名来实现的,那么什么是换名?C++编译器在编译c++函数时,会根据该函数的参数表对其名称进行替换,因此同一个作用域中参数表不同的同名函数,在编译成二进制目标模块以后,起函数名是不同的。以下是Ubuntu下查看函数的换名:#include<iostream>using namespace std;char fun(short h,int i){ cout << "fun(short,int)" << endl; return 'a';}void fun(float x,double y){ cout << "3fun(float,double)" << endl; return'b';}[yang]g++ -c test.cpp[yang]nm test.o00000014 T _Z3funfd //换名之后 函数1 f-float d-int00000000 T _Z3funsi //换名之后 函数2 s-short i-double U __gxx_personality_v03)从c->c++的函数调用的两种解决方式:a、在c中用的函数用c++的换名调用b、在c++中函数前些 externa “C” char fun(char a,int i){}让编译器按c的方式进行编译,不换名;extern “C”{ 函数1, 函数2, ...}注:被extern "C" 修饰的函数就不能实现函数重载。
3、函数缺省参数
1、在声明函数时可以为函数部分或者全部采用缺省值,调用函数时,如果某些参数没有提供实参,那么该参数可以取缺省值。2、如果函数的某个参数带有缺省值,那么该参数后面的所有参数都必须带有缺省值。3、避免缺省参数的重载产生歧义。
0 0
- C 重载
- C++<<重载
- C++-运算符重载
- C/C++ 函数重载
- [C++]重载运算符
- c++(重载、覆盖、隐藏)
- C语言的重载
- [c++]函数重载
- C++:函数重载
- Objective-C函数重载
- C符号重载
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- C#:运算符重载
- c++(重载、覆盖、隐藏)
- 二叉搜索树小结
- 基于arm的C++反汇编 qemu-arm环境搭建
- 设计模式(二)适配器模式
- 平凡之路上,请不要后会无期
- WinHttp编程初步心得
- C++重载
- 设置导航栏的标题 背景颜色和字体大小
- 域名解析和cdn 原理
- 数据处理
- python3.4-import方法返回“identifier expected”
- android 登录界面功能实现
- C#技术开发
- HDU 1358 Period(next数组+周期+循环节)
- python线程池(threadpool)模块使用