c++函数重载
1. 在c++中可以定义一些同名函数,为函数重载? -- C语言是不支持的。
2. 有时候我们想要通过函数去实现类似的操作,比如:
? ? ? ? ? ?我们封装了一个两整数数相加的函数sum(int x, int y)。? ? ? ? ? ? 但是因为后来需求,需要计算三个整数的和,或者浮点数的和,在c语言中我们只能定义一个
sum1(或者其它与sum名字不同的函数),那如果我们后面再有计算四个整数的需求等等。。。。。
在C语言中只能定义多个名字相差不多的函数,它们实现的功能是极其类似的,只是计算的个数或者类型不同而已,定义那么多函数显然不方便。
在c++中可以实现函数重载,类似功能的函数的函数名是一样的(例如:求和都是sum),但是传入的参数的个数或者参数的类型是不同的,编译器通过这个区别来找你到底使用的是哪个函数的重载
#include <iostream>
#include <Windows.h>
using namespace std;
/*c++函数重载: 根据参数类型和参数个数不同,但是不能根据返回值类型实现函数重载*/
/*计算两个整数型的数值和的函数*/
int add(int a, int b)
{
cout << "调用add的版本1" << endl;
return a + b;
}
/*计算三个整数型的数值和的函数*/
int add(int a, int b, int c)
{
cout << "调用add的版本2" << endl;
return a + b + c;
}
/*计算两个浮点数的数值和的函数*/
float add(float a, float b)
{
cout << "调用add的版本3" << endl;
return a + b;
}
int main(void)
{
cout << add(1, 2) << endl;
cout << add(1.0f, 2.0f) << endl;
system("pause");
return 0;
}
以上代码就是先了add求和函数的重载 。
函数重载注意事项:
1. 函数重载只能通过参数类型和参数个数不同来实现,不能通过返回值类型不同来实现
2. 在定义浮点数类型使用重载时.
? ? ? ?例:? sum(int a,int b);
? ? ? ? ? ? ? sum(float a,float b)? ? 当我们调用这个重载时? sum(1.1,1.2); 编译器会报错。
? ? ? 原因: 因为你定义的重载是float类型,但是1.1,1.2等浮点数常量默认为double类型,编译器去? ? ? ? ? ? ? ? ? ?找重载发现没有符合要求的自然报错。
? ? ? ? ? ? ? ?sum(1.1f,1.2f); // 这样就可以了。
3. 当函数的参数有默认值的时候需要注意。
? ? ? ? ?例: sum(int a, int b);? ? sum(int a,int b ,int c = 3);
? ? ? ? ? ? ? ? 上面是参数个数不同产生的重载-- 当我们带调用时第一个时-- sum(1,2)这样就会出错,因为第二个函数重载因为第三个参数有默认值,也可以使用sum(1,2)来调用,这样编译器就不知道调用哪个了,就会出错。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!