C++函数重载
C++函数重载可以这样简单理解。
作者的话:
1、本文章供大家参考学习,欢迎朋友们留言交流,也希望有朋友有其他见解。
2、文章写的很冲忙,若有错误,还请赐教。
3、你的点赞是对我的最大鼓舞。>^ _ ^<(疯狂暗示)。
情况一
下面为大家展示例题:
#include<iostream>
void print( int *pstart , int *pend ); //声明函数
void print( char *pstart , char *pend ); //声明函数
int main()
{
const unsigned short X = 5; //相当于宏定义。(可以这么理解)
int IntArrar[X] = {1,2,3,4,5}; //定义一个int型数组。
char CharArrar[X] = {'a','y','r','m','j'}; //定义一个char型数组。
int *pInt = IntArrar; //定义一个int型指针变量
char *pChar = CharArrar; //定义一个char型指针变量
print( IntArrar , IntArrar + 5 ); //调用函数1
print( CharArrar , CharArrar + 5); //调用函数2
return 0;
}
void print( int *pstart , int *pend )
{
while( pstart != pend ) //输出
{
std::cout << *pstart << " " ;
pstart++;
}
std::cout << std::endl;
}
void print( char *pstart , char *pend )
{
while( pstart != pend ) //输出
{
std::cout << *pstart << " " ;
pstart++;
}
std::cout << std::endl;
}
可见两个函数的名称均为"print" ,并且返回值均为void。
但是他们的参数类型不同,一个为int整型,一个为char字符型。
故在这两个函数被调用时,会依据起参数类型选择性调用第一还是第二个函数。
这就是C++函数重载的一种情况。
情况二
另一种情况是函数名称相同,但是参数数目不同。
下面展示例题:
#include<iostream>
void calc( double a ); //声明
void calc( double a , double b ); //声明
void calc( double a , double b , double c); //声明
int main()
{
std::cout << "请输入数字(用空格隔开): " ;
double a[3];
int i = 0;
while( std::cin.peek() != '\n' && i < 3 )
{
if( std::cin.peek() == ' ') //如果是空格,用std::cin.get()吃掉。
{
std::cin.get();
continue;
}
std::cin >> a[i]; //赋值。
i++;
}
switch(i) //判断参数数目进行调用
{
case 1:
calc( a[0] );
break;
case 2:
calc( a[0] , a[1] );
break;
case 3:
calc( a[0] , a[1] , a[2] );
break;
}
return 0;
}
void calc( double a ) //输入一个数字会输出他的平方。
{
std::cout << a * a << std::endl;
}
void calc( double a , double b ) //输入两个数字会输出他们的乘积。
{
std::cout << a * b << std::endl;
}
void calc( double a , double b , double c) //输入三个数字会输出他们的和。
{
std::cout << a + b + c << std::endl;
}
很明显这里有三个名称为calc函数。
但是他们的函数参数数目不同(一个为1个,一个为2个,一个为3个)。
简单的来说,函数的重载就是函数名相同,但是参数的个数和类型不同。
本文章只在本人的知识范围内,若有更深的见解,欢迎在下方评论区留言哦。
你的点赞是对我的最大鼓舞。>^ _ ^<(疯狂暗示)(手动滑稽)