一. 何为缺省参数?
在C语言中是没有缺省参数这一概念的,缺省参数是在C++中引入的。
以下面的例子来说明什么是缺省参数:
#include<iostream>//输入输出流头文件
#include<stdlib.h>
using namespace std;
int add(int a = 3, int b = 4, int c = 6)
{
return a + b + c;
}
int main()
{
int c = 0;
int b = 0;
c=add();
b = add(7, 8, 9);
cout << c <<endl<< b<<endl;
system("pause");
return 0;
}
由输出可以看到,c=13,即没有传参的函数输出的值为13,传参的输出的值为24,没有传参的其实是用我们函数定义中给的参数值,如果函数传参了,则就用我们传的值。
在add函数中int add(int a = 3, int b = 4, int c = 6),其中括号内的参数,我们将它称为缺省参数,给缺省参数赋的值,那就是缺省值喽!
二. 下面说一下缺省参数在使用时的注意事项:
1. 首先我们在给缺省参数赋值时,必须从右向左赋,解释一下,就是你在给你的缺省参数赋值时,是要从右边依次开始赋值的,中间不可以跳跃,即不可以出现这种情况int add(int a = 3, int b ,int c = 6),记住是在依次的前提下,从右向左,这样就不管你左边的参数赋不赋值都是可以的。即就是这种情况:int add(int a , int b = 4, int =3 )。
2.缺省值必须是常量或全局变量。
3.缺省参数是不能同时在函数声明和定义中同时出现,只能二者则其一,一般我们是建议放在声明中的。因为函数的声明是告诉编译器,后面的这个函数的传参类型是这样,方便我们对函数的参数进行类型检测。
4.C 语言是不支持缺省参数的。
三. 最后,在补充点相关知识:
在我们的C语言中,函数没有指定参数列表时,默认是可以接受任意多个参数的,但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,是不接受任何参数的。
void Test()
{}
int main()
{
Test(10);
return 0;
}
如上面的函数在C语言中,是可以编译的过的,但在C++中是不可以编译过的,因为C++对函数的传参有严格的控制,若参数列表为空,则就不能传参,但C语言确是可以的。
C++之缺省参数
最新推荐文章于 2024-03-30 18:44:10 发布