小甲鱼C++学习笔记Day3(函数的重载)

C++里的函数重载(overloading)很强大
所谓重载函数的实质就是用同样的名字再定义一个有着不同参数但有着同样用途的函数。(人格分裂、多重身份。。。。)
Day2例题改

#include <iostream>

void convertTemperature(double tempIn, char typeIn);

int main()
{
	double tempIn;
	char typeIn;

	std::cout << "请以【XX.X C】或者【XX.X F】输入一个温度:";
	std::cin >> tempIn >> typeIn;
	std::cin.ignore(100,'\n');
	std::cout << "\n";

	convertTemperature(tempIn, typeIn);

	return 0;
}

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

	float tempOut;
	char typeOut;
	switch( typeIn )
	{
	case 'C':
	case'c':
		tempOut=tempIn*RATIO+ADD_SUBTRACT;
		typeOut = 'F';
		typeIn = 'C';
		break;

	case 'f':
	case 'F':
		tempOut=(tempIn-ADD_SUBTRACT)/RATIO;
		typeOut = 'C';
		typeIn = 'F';
		break;

	default:
			typeOut = 'E';
			break;
	}

	if ( typeOut != 'E')
	{
		std::cout << tempIn << typeIn 
			<< " = " << tempOut << typeOut << "\n\n";
	}
	else
	{
		std::cout <<"输入错误!" <<  "\n\n";
	}

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

}

再改
输入一个双精度,再输入一个整形,程序还是有点乱,以后改。

#include <iostream>

void convertTemperature(double tempIn, char typeIn);
void convertTemperature1(int tempIn, char typeIn);

int main()
{
	double tempIn;
	char typeIn;

	std::cout << "请以【XX.X C】或者【XX.X F】输入一个温度:";
	std::cin >> tempIn >> typeIn;
	std::cin.ignore(100,'\n');
	std::cout << "\n";

	convertTemperature(tempIn, typeIn);

	std::cin.ignore(100,'\n');

	std::cout << "请以【XX.X C】或者【XX.X F】输入一个温度:";
	std::cin >> tempIn >> typeIn;
	std::cin.ignore(100,'\n');
	std::cout << "\n";
	convertTemperature1(tempIn, typeIn);

	return 0;
}

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

	double tempOut;
	
	char typeOut;

	switch( typeIn )
	{
	case 'C':
	case'c':
		tempOut=tempIn*RATIO+ADD_SUBTRACT;
		typeOut = 'F';
		typeIn = 'C';
		break;

	case 'f':
	case 'F':
		tempOut=(tempIn-ADD_SUBTRACT)/RATIO;
		typeOut = 'C';
		typeIn = 'F';
		break;

	default:
			typeOut = 'E';
			break;
	}

	if ( typeOut != 'E')
	{
		std::cout << tempIn << typeIn 
			<< " = " << tempOut << typeOut << "\n\n";
	}
	else
	{
		std::cout <<"输入错误!" <<  "\n\n";
	}

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

}

void convertTemperature1(int tempIn, char typeIn)
{
	//华氏温度 == 摄氏温度*9.0/5.0+32
	const unsigned short ADD_SUBTRACT = 32;
	const double RATIO = 9.0/5.0;

	int tempOut;
	char typeOut;

	switch( typeIn )
	{
	case 'C':
	case'c':
		tempOut=tempIn*RATIO+ADD_SUBTRACT;
		typeOut = 'F';
		typeIn = 'C';
		break;

	case 'f':
	case 'F':
		tempOut=(tempIn-ADD_SUBTRACT)/RATIO;
		typeOut = 'C';
		typeIn = 'F';
		break;

	default:
			typeOut = 'E';
			break;
	}

	if ( typeOut != 'E')
	{
		std::cout << tempIn << typeIn 
			<< " = " << tempOut << typeOut << "\n\n";
	}
	else
	{
		std::cout <<"输入错误!" <<  "\n\n";
	}

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

}

函数的重载:对函数进行重载,事实上可以简化编程工作和提高代码可读性。
注意点
1、对函数(方法)进行重载一定要谨慎,不要“无的放矢”或者“乱点鸳鸯”
2、要知道重载函数越多,该程序就越不容易看懂;
3、注意区分重载和覆盖。
4、我们只能够通过不同参数进行重载,但不能通过不同的返回值(尽管后这也是一种区别)
5、对函数进行重载的目的是为了方便对不同数据类型进行同样的处理

Question:为什么不通过返回值不同来重载函数(方法)呢?
利用重载函数的方法设计一个程序,该程序通过函数“calc()”进行计算并返回显示结果。
当传入一个参数时,计算该参数的平方。
当传入两个参数时,计算两个参数的积。
当传入三个参数时,计算三个参数的和。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值