C++中的函数重载
面向对象编程的一个特点是,许多函数可以有相同的名称,但有不同的参数。这就是所谓的函数重载。函数重载是在一个函数名称上添加额外任务的过程。在使用函数重载时,”函数 “名称和参数应该是不同的。在C++中,函数重载是多态性特征的一种说明。
多态性
多态性是指存在多种形式。多态性可以简单地定义为一条信息以多种形式出现的能力。
一个人可以同时拥有许多特征,这就是多态性的一个现实世界的例子。一个人同时是父母、配偶和工人。因此,同一个人在不同的环境下会有不同的表现。多态性就是这个术语。面向对象编程的关键组成部分之一是多态性。
对于函数重载,参数应该遵守以下的一个或多个要求。
应该有一个单独的参数种类。
add(int a, int b)
add(double a, double b)
上述讨论的执行情况如下所示。
#include < iostream >
using namespace std ;
void add ( int a , int b )
{
cout < < " sum = " < < ( a + b ) ;
}
void add ( double a , double b )
{
cout < < endl < < " sum = " < < ( a + b ) ;
}
// Driver code
int main ( )
{
add ( 10 , 2 ) ;
add ( 5.3 , 6.2 ) ;
return 0 ;
}
输出 。
Sum = 12
Sum = 11.5
...................
Process executed in 1.22 seconds
Press any key to continue.
解释一下 。
在上面的代码中,我们可以看到我们有两个名称相同的函数 “add”,具有相同的功能,但参数的数据类型不同,分别是int和double。
每个参数的数字应该是不同的。
add ( int x , int y )
add ( int x , int y , int z )
上述讨论的执行情况如下所示 。
# include < iostream >
# include < bits/stdc++.h >
using namespace std ;
void add ( int x , int y )
{
cout < < " sum = " << ( x + y ) ;
}
void add ( int x , int y , int z )
{
cout < < endl < < " sum = " < < ( x + y + z ) ;
}
int main ( )
{
add ( 10 , 2 ) ;
add ( 5 , 6 , 4 ) ;
return 0 ;
}
输出 。
sum = 12
sum = 15
...............
Process executed in 1.22 seconds
Press any key to continue.
解释 。
在上面的代码中,两个函数都是相同的,但参数的数量不同,数据类型相同,工作方式也相同。
每个参数的顺序应该是不同的。
add ( int x , double y )
add ( double x , int y )
上述讨论的执行情况如下所示。
# include < iostream >
using namespace std ;
void add ( int x , double y )
{
cout << " sum = " << ( x + y ) ;
}
void add( double x , int y )
{
cout << endl << " sum = " << ( x + y ) ;
}
// Driver code
int main()
{
add( 10 , 2.5 ) ;
add( 5.5 , 6 ) ;
return 0 ;
}
输出 。
sum = 12.5
sum = 11.5
..................
Process executed in 1.11 seconds
Press any key to continue.
这里有一个直接的C++例子来展示函数重载。
# include < iostream >
using namespace std ;
void print ( int i ) {
cout < < " This is int " < < i < < endl ;
}
void print ( double f ) {
cout < < " This is float " < < f < < endl ;
}
void print ( char const* c ) {
cout < < " This is char* " < < c < < endl ;
}
int main ( ) {
print ( 10 ) ;
print ( 10.10 ) ;
print ( " ten " ) ;
return 0 ;
}
输出 。
This is int 10
This is float 10.1
This is char* ten
..............................
Process executed in 1.11 seconds
Press any key to continue.
函数重载的过程是什么
完美匹配:(函数名和参数)。
如果发现部分匹配。
- 一个int被从Char、Unsigned Char和Short类型中提升。
- Float被赋予了一个双重的推广。
在没有匹配的情况下,C++使用标准转换来寻找匹配。
其他错误