函数重载概念
在同一个类中,可以存在一个以上的同名方法,只要它们的数据类型不同或参数出现的顺序不同或个数不同即可
重载特点
1、允许两个以上的同名函数
2、函数之间的参数组合必须不同(参数的数目不同或者参数的类型不同或者参数出现的顺序不同)
3、函数的返回值不能作为判断函数之间是否构成重载的依据
重载好处
1、优化了主函数main()里的代码,使得主函数更有可读性,优化设计
2、培养了“黑盒思想“,将每一个函数当成一个工具使用可以减少我们需要记忆的东西,是我们的程序更加美观
代码演示
#include <bits/stdc++.h>
using namespace std;
//函数的重载:函数名相同,参数表不同(数据类型不同或参数出现的顺序不同或个数不同)
bool isTriangle(int a, int b, int c);
bool isTriangle(float a, float b, float c);
bool isTriangle(double a, double b, double c);
bool isValidSide(int a);
bool isValidSide(float a);
bool isValidSide(double a);
bool isTrue(int a, int b, int c);
bool isTrue(float a, float b, float c);
bool isTrue(double a, double b, double c);
int SeekCircumference(int a, int b, int c);
float SeekCircumference(float a, float b, float c);
double SeekCircumference(double a, double b, double c);
int main()
{
float fa, fb, fc;
cout << "Input three sides of a Triangle:";
cin >> fa >> fb >> fc;
if(isTriangle(fa,fb,fc))
cout << fa << ", " << fb << " and " << fc << " can constitute Triangle!" << endl;
else
cout << "is an invalid Triangle!" << endl;
cout << "三角形的周长是: " << SeekCircumference(fa,fb,fc) << endl;
int a, b, c;
cout << "Input three sides of a Triangle:";
cin >> a >> b >> c;
if(isTriangle(a,b,c))
cout << a << ", " << b << " and " << c << " can constitute Triangle!" << endl;
else
cout << "is an invalid Triangle!" << endl;
cout << "三角形的周长是: " << SeekCircumference(a,b,c) << endl;
double da, db, dc;
cout << "Input three sides of a Triangle:";
cin >> da >> db >> dc;
if(isTriangle(da,db,dc))
cout << da << ", " << db << " and " << dc << " can constitute Triangle!" << endl;
else
cout << "is an invalid Triangle!" << endl;
cout << "三角形的周长是: " << SeekCircumference(da,db,dc) << endl;
return 0;
}
bool isTriangle(int a, int b, int c)
{
// 边界条件
if(isValidSide(a)&&isValidSide(b)&&isValidSide(c))
{
if(isTrue(a,b,c)&& isTrue(b,c,a) && isTrue(c,a,b))
return true;
else
return false;
}
else
return false;
}
bool isValidSide(int a)
{
if(a>0)
return true;
else
return false;
}
bool isTrue(int a, int b, int c)
{
if(a+b>c)
return true;
else
return false;
}
bool isTriangle(float a, float b, float c)
{
// 边界条件
if(isValidSide(a)&&isValidSide(b)&&isValidSide(c))
{
if(isTrue(a,b,c)&& isTrue(b,c,a) && isTrue(c,a,b))
return true;
else
return false;
}
else
return false;
}
bool isValidSide(float a)
{
if(a>0)
return true;
else
return false;
}
bool isTrue(float a, float b, float c)
{
if(a+b>c)
return true;
else
return false;
}
bool isTriangle(double a, double b, double c)
{
// 边界条件
if(isValidSide(a)&&isValidSide(b)&&isValidSide(c))
{
if(isTrue(a,b,c)&& isTrue(b,c,a) && isTrue(c,a,b))
return true;
else
return false;
}
else
return false;
}
bool isValidSide(double a)
{
if(a>0)
return true;
else
return false;
}
bool isTrue(double a, double b, double c)
{
if(a+b>c)
return true;
else
return false;
}
int SeekCircumference(int a, int b, int c)
{
int C=a+b+c;
return C;
}
float SeekCircumference(float a, float b, float c)
{
float C=a+b+c;
return C;
}
double SeekCircumference(double a, double b, double c)
{
double C=a+b+c;
return C;
}