C++中的函数重载

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++使用标准转换来寻找匹配。

其他错误

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程