【c++】函数的重载

函数重载的实质:

     用同样的名字再定义一次一个有着不同参数但有着同样用途的函数。

可以是参数个数不同,也可以是参数类型不同。


重载不是面向对象特征

函数的重载:

-对函数(方法)进行重载要谨慎

-重载函数越多,该程序就越不容易看懂

-注意区分重载和覆盖

-我们只能通过不同的参数重载,不能通过不同的返回值

-对函数重载的目的是为了方便对不同数据类型进行同样的处理


例一

#include<iostream>

void convertTemperature( double tempin, char typein);
void convertTemperature( int tempin, char typein);

int main()
{
	double tempin;
	char typein;
	int tempinint;

	std::cout<<"请以【xx.x C】或者【xx.x F】格式输入一个温度:";
	std::cin >> tempin >> typein;
	std::cin.ignore(100,'\n');
	std::cout<<"\n";
	convertTemperature( tempin,typein );

	std::cout<<"请以【xx C】或者【xx F】格式输入一个温度:";
	std::cin >> tempinint >> typein;
	std::cin.ignore(100,'\n');
	std::cout<<"\n";
	convertTemperature( tempinint,typein );

	return 0;
}

void convertTemperature( double tempin, char typein)
{
	//华氏温度==摄氏温度*9.0/5.0+32
	const unsigned short ADD_SUBTRACT = 32;
	const double RADIO = 9.0/5.0;

	double tempout;
	char typeout;

	switch( typein )
	{
	case 'c' :
	case 'C' :
		tempout=tempin * RADIO+ADD_SUBTRACT;
		typein = 'C';
		typeout = 'F';
		break;
	case 'F' :
	case 'f' :
		tempout = (tempin - ADD_SUBTRACT)/RADIO;
		typein = 'F';
		typeout = 'C';
		break;
	default:
		typeout='E';

	}

	if (typeout!='E')
	{
		std::cout<<tempin <<typein <<"="<<tempout<<typeout<<"\n\n";
	}
	else 
	{
		std::cout<<"输入格式错误!!!"<<"\n";
	}

	std::cout<<"请输入任意字符结束程序";
	std::cin.get();

}

void convertTemperature( int tempin, char typein)
{
	//华氏温度==摄氏温度*9.0/5.0+32
	const unsigned short ADD_SUBTRACT = 32;
	const double RADIO = 9.0/5.0;

	int tempout;
	char typeout;

	switch( typein )
	{
	case 'c' :
	case 'C' :
		tempout=tempin * RADIO+ADD_SUBTRACT;
		typein = 'C';
		typeout = 'F';
		break;
	case 'F' :
	case 'f' :
		tempout = (tempin - ADD_SUBTRACT)/RADIO;
		typein = 'F';
		typeout = 'C';
		break;
	default:
		typeout='E';

	}

	if (typeout!='E')
	{
		std::cout<<tempin <<typein <<"="<<tempout<<typeout<<"\n\n";
	}
	else 
	{
		std::cout<<"输入格式错误!!!"<<"\n";
	}

	std::cout<<"请输入任意字符结束程序";
	std::cin.get();

}


【作业】

利用函数重载的方法设计一个成宿,通过函数calc()进行计算并返回显示结果

-传入一个参数时,计算该参数的平方值

-传入两个参数时,计算两个参数的积

-传入三个参数时,计算三个参数的和


#include<iostream>

int calc( double a );
int calc( double a, double b);
int calc( double a, double b ,double c);

int main()
{
	double x,y,z;

	std::cin>>x;
	calc( x );

	std::cin>>y;
	calc( x, y );
	
	std::cin>>z;
	calc(x,y,z);

	std::cin.ignore(100,'\n');
	std::cout<<"请输入任意字符结束程序"<<"\n";
	std::cin.get();

	return 0;
}

int calc( double a )
{
	std::cout<<a<<" 的平方为: "<<a*a<<"\n";
	return 0;
}

int calc( double a ,double b)
{
	std::cout<<a<<","<<b<<" 的积为: "<<a*b<<"\n";
	return 0;
}

int calc( double a,double b, double c )
{
	std::cout<<a<<","<<b<<","<<c<<" 的和为: "<<a+b+c<<"\n";
	return 0;
}


尚未解决的问题:

一:程序的健壮性差,输入不是数的话为自动退出程序

二:能不能根绝判断输入的数据个数来选择某一个函数执行???



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值