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会对小数进行下去整,导致精度降低。