C++中有一种函数叫做重载函数,意思就是这些重载函数的参数个数,或者是参数类型是不同的,但是,这些函数具有相同的名字,需要注意的是,函数重载和函数覆盖是不同的。函数重载可以大大提高代码的利用率,但是,在一般的开发中,尽量不要使用过多的重载函数,这样容易混淆。为什么要学习函数重载呢,因为函数重载是C++三大特性之一多态的学习基础。
下面看一个函数重载的例子:
要求,对Cale()函数进行重载,当用户输入一个数字时,对这个数字进行平方并输出,当用户输入两个数字时,将这两个数字乘积之后进行输出,当用户输入三个数字时,将三个数相加之后再输出结果。
参考代码:
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
//定义重载函数;
int cale(int x);
int cale(int x, int y);
int cale(int x, int y, int z);
int cale(int x){
return x*x;
}
int cale(int x, int y){
return x*y;
}
int cale(int x, int y, int z){
return x + y + z;
}
int _tmain(int argc, _TCHAR* argv[])
{
//此程序用来实现函数的重载,当输入一个数字时,通过函数计算出此数字的平方
// 输入两个值时,计算这两个数的乘积
// 输入三个数字时,计算该三个数的和
cout << "请输入您要进行的操作数字,范围在1-3之间" << endl;
//定义一个整形数组来存放里面的值,并判断个数
int number[5];
int i=0;
int x ,y,z= 0;
int sum = 0;
while (cin.peek()!='\n'){
cin >> number[i];
i++;
}
//int lenght = sizeof(number) / sizeof(number[0]);
//如果这样判断字符串的长度,只可能是原本规定的字符串长度
switch (i)
{
case 1:
x = number[0];
sum=cale(x);
cout << "计算的结果为" << sum << endl;
break;
case 2:
x = number[0];
y = number[1];
sum = cale(x,y);
cout << "计算的结果为" << sum << endl;
break;
case 3:
x = number[0];
y = number[1];
z = number[2];
sum = cale(x, y,z);
cout << "计算的结果为" << sum << endl;
break;
default:
break;
}
system("pause");
return 0;
}
这里需要注意两个问题:
(1)C++不允许申请变量后,没有初始化。
(2)如何判断用户输入几个数字,这里采用的方法是,设置一个计数器来记录输入的个数,申请一个数组来存放用户输入的数字内容。
补充一下数组的学习例子:利用数组存放用户输入的10个值,对这些输入的值进行求和,求平均数。
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//实现将用户输入的10个数字求和,求平均数
cout << "请输入10个数字:" << endl;
int number[10];
for (int i = 0; i < 10; i++){
cin >> number[i];
}
int sum = 0;
double average = 0;
for (int j = 0; j < 10; j++){
sum += number[j];
average = sum / 10.0;
}
cout << "您输入的整数的总和为:"<<sum;
cout << '\n';
cout << "平均数为:"<<average;
system("pause");
return 0;
}
这里需要注意,在求解平均数的时候,需要用到double型,因为int会对小数进行下去整,导致精度降低。