//在c++中,函数的形参是可以有默认参数的,在函数调用时,可以不给其赋值
//使用默认的参数,所以带默认参数的形参一般写在右边
//一般形式:类型名 函数名(参数1,参数2.。。。参数n=num){函数体}
//注意:1.如果某位置由默认参数,则其后都为默认参数
// 2.如果在函数声明时赋值默认参数,则定义时不可赋参(谁先出现谁默认参)
int volume(int , int , int = 4);
int main()
{
int a, b,c;
cout << "请输入长和宽" << endl;
cin >> a >> b;
cout << "已经默认高为4"<<endl;
cout << "体积为:" << volume(a, b) << endl;
return 0;
}
int volume(int a,int b,int c)
{
return a * b * c;
}
占位参数
//c++中函数占位参数:
void fun(int a, int)//int为占位参数
{
cout << "niaho" << endl;
}
int main()
{
fun(10, 10);//第二个10目前用不到,但是调用时不可不写第二个整型
}
重载函数
//c++函数重载:函数名可以相同,提高利用率
//满足条件:同一作用域,函数名相同,函数参数 类型 个数 顺序 至少一个不同
//返回值类型不同不可以作为重载条件
//类型不同
int max(int a, int b)
{
return a > b ? a : b;
}
float max(float a, float b)
{
return a > b ? a : b;
}
int main()
{
int a, b;
float c, d;
cout << "输入两整数" << endl;
cin >> a >> b;
cout << "输入两小数" << endl;
cin >> c>> d;
cout << "整数max:" << max(a, b)<<endl;
cout << "小数max:" << max(c, d)<<endl;
return 0;
}
//参数不同
float max(float a, float b)
{
return a > b ? a : b;
}
float max(float a,float b,float c)
{
return (a>b?a:b)>c?(a>b?a:b):c;
}
int main()
{
float a, b;
float c, d;
cout << "输入两小数" << endl;
cin >> a >> b;
cout << "输入两小数" << endl;
cin >> c>> d;
cout << "整数max:" << max(a, b,c)<<endl;
cout << "小数max:" << max(c, d)<<endl;
return 0;
}
//顺序不同
void max(int& a, float& b)
{
cout << "max1 is:" << (a > b ? a : b) << endl;
}
void max(float& a, int & b)
{
cout << "max2 is:" << (a > b ? a : b) << endl;
}
int main()
{
float a;
int b;
cout << "输入小数,整数" << endl;
cin >> a >> b;
max(a, b);
max(b, a);
}
注意事项
//注意事项
//1.引用做重载条件
void fun(int& a)
{
cout << "调用fun(int& a)" << endl;
}
void fun(const int& a)
{
cout << "调用fun(const int& a)" << endl;
}
int main()
{
int a = 10;
fun(a);//a本质上为变量,调用不带const的
fun(1);//1为常量,所以调用const
}
//2.函数重载碰到默认参数
void fun(int a, int b = 10)
{
cout << "haha" << endl;
}
void fun(int a)
{
cout << "yes" << endl;
}
int main()
{
int a = 10;
// fun(a);//因为默认参数存在,函数调用冲突
fun(a, 29);
}