#include<iostream>
using namespace std;
void print(int year = 2024, int month = 6, int day = 6)
{
cout << year << "-" << month << "-" << day << endl;
}
int main()
{
print();
print(1);
print(1, 1);
print(1, 1,1);
}
正常情况下,我们定义定义函数的时候,我们不会在形参后面加上一个特定的值,但是在缺省函数中,我们可以加一个特定的值。如果我们没有指定实参,我们就采用形参的缺省值。
缺省参数的分类:
1.全缺省参数:所以的形参都有一个缺省值。
2.半缺省参数:不是缺省一半,是一部分,除了全缺省参数,其他的都是半缺省参数。
注意:
????1.半缺省的方向只能从右到左,也不能隔这给:
以上面的例子为例,如果我们只半缺省:
void print(int year , int month, int day);
void print(int year=2024, int month = 6, int day)
{
cout << year << "-" << month << "-" << day << endl;
}
当我们在调用print函数,并且值传一个参数时:print(6);
这时候就会有歧义了,到底传过来的6是给year,还是给day呢。传给year是因为传递的顺序是从左到右。穿给day是因为day没有缺省值,其他两个都有。所以这样是不行的
2.上面也提到过的,缺省参数值不能再函数声明和定义中同时出现,要么在函数声明中出现,要么在函数定义中出现。
#include<iostream>
using namespace std;
void print(int year , int month, int day);
//在声明中给缺省值
void print(int year=2024, int month = 6, int day=6)
{
cout << year << "-" << month << "-" << day << endl;
}
int main()
{
print(1);
print(1);
print(1, 1);
print(1, 1,1);
}
3.C语言不支持缺省参数。
4.缺省值必须是常量,或者全局变量。