我的小小学习笔记(5)之C++-----缺省函数

来源:互联网 发布:hmmlearn python 教程 编辑:程序博客网 时间:2024/06/06 04:03

缺省函数(C语言不支持)

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。

【注意】
1. 带缺省值的参数必须放在参数表的最后面。(服从半缺省的规则)
2. 缺省参数不能同时在函数的声明和函数定义中出现,二者只能选其一。

     声明  void FunTest(int a=10);

     定义  void FunTest(int a)

              { }

       *最好放在声明位置
3. 缺省值必须是常量或全局变量。
4. 缺省参数必须通过值参或常参传递。


*缺省分为全缺省和半缺省。

(1)全缺省:每个缺省值都给出。

void FunTest(int _iParam1 = 0, int _iParam = 1)

{ }

举个例子

void FunTest(int a=0,int b=0,int c=0)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
int main()
{
FunTest();//0,0,0
FunTest(10);//10,0,0
FunTest(10,20);//10,20,0
FunTest(10, 20,30);//10,20,30
return 0;
}

注意:慎用缺省函数,否则会产生二义性
void FunTest ()
{}
void FunTest (int a = 10 )
{}

假如使用不带实参方式调用FunTest()函数时,编译器将不知道调用哪一个,产生二义性。

(2)半缺省:缺省值并没有全部给出。

*从右向左依次给,不能隔着给,也不能跳着给

void FunTest(int _iParam1, int _iParam2 = 0 )          可以
{}
void FunTest(int _iParam1, int _iParam2 = 0 , int _iParam3/* = 0*/)      不可以
{}
void FunTest(int _iParam1, int _iParam2 /* = 0*/,int _iParam3 = 0)            看情况(如下)

{}

第一种情况

void FunTest(int a,int b=0,int c=0)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
int main()
{
FunTest();//编不过去
FunTest(10);//10,0,0
FunTest(10,20);//10,20,0
FunTest(10, 20,30);//10,20,30
return 0;
}

第二种情况

void FunTest(int a,int b,int c=0)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
int main()
{
FunTest();//出错
FunTest(10);//出错
FunTest(10,20);//10,20,0
FunTest(10, 20,30);//10,20,30
return 0;
}

阅读全文
0 0
原创粉丝点击