我的小小学习笔记(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;
}
- 我的小小学习笔记(5)之C++-----缺省函数
- 我的小小学习笔记(7)之C++------模板之模板函数
- 我的小小学习笔记(6)之C++-----函数的重载
- 我的小小学习笔记(3)----C的关键字
- 我的小小学习笔记(1)之C语言--sizeof&strlen(1)
- 我的小小学习笔记(2)之C语言——浅谈关键字 const,static,volatile(1)
- 我的小小学习笔记(4)----C++的关键字
- 用汇编的眼光看c++(之模板函数) ,(之缺省模板、特化模板) .
- 【从C到C++学习笔记】内联成员函数/成员函数重载及缺省参数
- vim的学习小小笔记
- C++语言笔记系列之六——函数的重载、函数缺省参数
- 我的小小成果 C语言
- C++之缺省参数的构造函数、缺省的构造函数及缺省的析构函数
- C学习笔记之函数
- 我的C/C++ 学习笔记 之 约定
- Bootstrap学习小小小小笔记
- More Effective C++----(4)避免无用的缺省构造函数 & (5)谨慎定义类型转换函数
- python学习笔记(七)——小小的实践
- iOS 测试 SwiftMonkey :iOS 上的 monkey
- hdu4597
- iconv命令
- 7.8noip测试
- 实现List和Map数据的转换
- 我的小小学习笔记(5)之C++-----缺省函数
- Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
- C++输入输出格式--保留n位小数
- Shiro 采用注解方式无法进入自定义Realm类的授权方法 解决方案
- nginx 优化
- Macaca Macaca 实现 IOS Monkey 测试 (支持 macaca2.x 版本)
- volatile关键字
- 51Nod
- cout.put()