一、简介
C++允许在声明函数或定义函数时,为形参指定一个默认值。
调用函数时,若给出对应实参,则将实参值传给形参,否则,形参值就是指定的默认值。
二、使用带默认形参值的函数
1、实例
#include<iostream>
using namespace std;
int s(int x=5,int y=6) //定义函数,指定形参默认值
{
int z;
z=x*y;
return z;
}
int main()
{
int A,B,S1,S2,S3;
cout<<"请输入A和B的值"<<endl;
cin>>A>>B; //假设:A=1,B=2;
S1=s(); //使用默认形参值:x=5,y=6
cout<<"S1="<<S1<<endl; //S1=5*6=30;
S2=s(A); //传递实参A=1,使用默认形参y=6
cout<<"S2="<<S2<<endl; //S2=1*6=6;
S3=s(A,B); //传递两个实参:A=1,B=2
cout<<"S3="<<S3<<endl; //S3=1*2=2;
return 0;
}
2、注意
1.当函数有多个默认形参值时,默认形参值从右到左顺序定义
int s(int a=5,int b) //错误❌
int s(int a,int b=6) //正确✔
int s(int a=5,int b=6) //正确✔
2.当函数既有声明又有定义时,只能在声明时指定默认形参值
3.形参的默认值可以是全局常量、局部常量,甚至一个函数,但绝不能是变量。
在相同的作用域内,默认形参值的定义必须唯一,但在不同的作用域内,指定的默认形参值可以不同。
#include<iostream>
using namespace std;
int L,W,S;//全局变量
void input(int a=2,int b=3)//定义函数,指定全局默认形参值
{
L=a;
W=b;
}
void output()
{
S=L*W;
cout<<"面积是:"<<S<<endl;
}
void show()
{
void input(int a=5,int b=6);//声明函数,指定局部默认形参值
input();//调用函数,使用局部默认的形参值(a=5,b=6)
output();
}
int main()
{
input();//调用函数,使用全局默认的形参值(a=2,b=3)
output();
input(8,6);//调用函数,用实参初始化形参
output();
show();
return 0;
}