c++函数重载
来源:互联网 发布:如何打开23端口 编辑:程序博客网 时间:2024/05/18 01:23
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
重载函数有点像是多种含义的操作符(上篇操作符重载函数重载中的一种),例如:
cout<<a;
a<<2;
这两者的同位<<操作符,一个为移位,另一个却为输出。函数重载的关键是函数的参数列表,也称为函数的特征标。两个函数的特征标相同,那么两个函数的参数个数与参数类型必须保持严格的一致。例如:可以定义如下一组函数:void test(int a,int b); //avoid test(double a,char *b); //bvoid test(long a,int b); //c
test(1,3)和a匹配,test(1.2,"q")则和b匹配。注意:
A. 如果有test()存在,那么,它和谁匹配呢?它不与任何原型匹配!切记,没有匹配的原型并不会自动停止使用其中的某个函数,因为c++将尝试使用标准类型转换强制进行匹配。如果b是test的唯一原型,那么tets(1.2,"q")其中的double类型便会强制转化为int类型。但是如果有多种类似于b原型的重载函数,比如:
void test(float a,char *b);
当test(1.2,"q")尝试去强制进行匹配时,c++就会陷入两难,不知道将int类型转化为float还是转化为double,所以c++将拒绝调用这种函数,并报错。B.编译器检查时,将把类型引用于类型本身视作同一个特征标。匹配函数并不区分const和非const变量。
C.是特征标使得可以对函数进行重载,而不是函数类型。例如:
int test(int a,int b); void test(int a,int b);//error//返回类型可以不同,但特征标也必须不同。int test(int a,int b); void test(int a,double b);//rightD.虽然函数的重载很吸引人,但也不要滥用,只有函数基本上执行相同的任务,但任务的数据不同时,才应用函数的重载。
阅读全文
3 0
- C/C++ 函数重载
- [c++]函数重载
- C++:函数重载
- Objective-C函数重载
- c++-函数重载
- C++-函数重载
- C++_函数重载
- 【C++】函数的重载
- 【C++】:C++函数重载
- [C++]函数重载
- C/C++函数重载
- <C++>_函数重载
- 【c++】函数的重载
- <C++>4.重载函数
- C/C++:C++函数重载
- 【C++】重载运算符和重载函数
- [C++]C++的函数重载
- C中没有函数重载!
- 图片不能百分百显示
- java的重写和重载
- spring与mybatis三种整合方法
- 文字和图片混合模式
- 利用cmd命令三步配置JDK,mysql各种环境变量
- c++函数重载
- HDU 4777 Rabbit Kingdom(树状数组 离线)
- windows internals(深入解析windows操作系统)笔记
- JavaScript运行原理解析
- 从贝叶斯方法谈到贝叶斯网络
- HTTP Server和Application Server
- 解决js浮点数计算不准确问题
- C# Tif格式转Jpg
- Linux基础之tr与重定向管道