C++中的函数重载

时间:2020-02-23 14:29:58  来源:igfitidea点击:

什么是函数重载?

C++编程语言为其用户提供了非常有用的功能,即函数重载。
它允许用户为两个或者多个函数使用相同的名称,并使用不同数量或者类型的参数。

例如,

int demo(int);
int demo(int, int);
int demo(float);

其中我们使用相同的函数名称" demo"来声明三个不同的函数。
请注意,它们全部采用不同数量或者类型的参数。
因此,所有这些函数都可以在单个程序中使用,并且函数调用将完全取决于传递的参数的类型和数量。

例如,如果将以下函数(尽管返回类型不同)与上述函数一起使用,则会引发错误。

float demo(int)

这是因为它采用与先前声明的第一个函数相同的参数类型和数量。

示例–使用C++中的函数重载计算周长

现在,让我们看一个简单的示例,在该示例中,我们通过在C++中实现函数重载概念,尝试根据用户的选择来计算正方形/三角形/矩形的周长。

#include<iostream>
using namespace std;

float peri(float x)
{
	return 4*x;
}

float peri(float a, float b, float c)
{
	return (a+b+c);
}

float peri(float l, float b)
{
	return 2*(l+b);
}

int main()
{
	float x, y, z;
	int ch;
	cout<<"::: Menu for calculating perimeter :::"<<endl;
	cout<<"1. Square"<<endl;
	cout<<"2. Triangle"<<endl;
	cout<<"3. Rectangle"<<endl;
	cout<<"Enter your choice(1/2/3) : ";
	cin>>ch;
	
	switch(ch)
	{
		case 1: cout<<"\n\nEnter edge for the Square: ";
				cin>>x;
				cout<<"\nPerimeter = "<<peri(x)<<" units";
				break;
				
		case 2: cout<<"\n\nEnter 1st side length: ";
				cin>>x;
				cout<<"\nEnter 2nd side length: ";
				cin>>y;
				cout<<"\nEnter 3rd side length: ";
				cin>>z;
				cout<<"\nPerimeter = "<<peri(x,y,z)<<" units";
				break;
				
		case 3: cout<<"\n\nEnter length for the Rectangle: ";
				cin>>x;
				cout<<"\nEnter breadth for the Rectangle: ";
				cin>>y;
				cout<<"\nPerimeter = "<<peri(x,y)<<" units";
				break;
				
		default: cout<<"Wrong Choice!";
				 exit(0);

	}
	
	return 0;
}

其中我们使用switch结构来计算正方形,三角形或者矩形中任何一个的周长。
用户可以选择" ch"来确定要进行数据输入的形状。

在用户在"switch"中做出选择之后,我们获取不同形状的数据,并将其传递给" peri()"函数,以打印相应的周长。

在这种情况下,对" peri()"的函数调用完全取决于传递给它的参数数量。
因此,对于单个参数,编译器会自动调用第一个函数并返回一个正方形的周长。

因此,对于两个参数和三个参数,分别调用计算矩形和三角形周长的相应函数。