cpp——复合类型——函数——匿名形参 默认实参
来源:互联网 发布:wiki 数据库 编辑:程序博客网 时间:2024/05/16 07:46
匿名形参
c++允许形参匿名,匿名形参主要用来占位,待以后完善,因为形参匿名,因此函数体中无法访问
void feed(int, int){ cout << "feed(int, int)" << endl;}void call_feed(){ //feed(); //feed(5); feed(5, 8);}
默认实参
- 默认实参本质就是在函数调用时,从函数声明(引用性声明和定义性声明)中获取默认实参值代替当前函数调用中相应位置实参的缺失,显然编译期代替
- 可为一个或多个形参指定默认实参,如果一个形参具有默认实参,那么此形参后所有形参(如果还有)都必须具有默认实参,因为函数调用时实参按位置解析,默认实参只能用来代替函数调用时缺少的尾部实参,默认实参可以是任何类型表达式(包括常量,常量是特殊表达式),只要表达式值类型与形参类型兼容,即表达式值类型允许隐式转换为形参类型
- 在函数声明(引用性声明和定义性声明)中指定默认实参,同一source file中,每个形参至多只能指定一次默认实参,否则编译器不知道使用哪个函数声明中默认实参,编译error,不同source file中同一函数声明可指定不同默认实参,不会引起冲突,因为编译器编译单元是source file,而且默认实参是编译器代替
- 通常在函数声明(引用型声明)中指定默认实参,在函数定义中不指定,因为函数作为接口常以header file和lib的形式分发给使用者,函数声明放在header file,使用者可知道默认实参值,函数定义以目标代码形式编译进lib,使用者无法知道默认实参值
默认实参使用合法
同一source file中每个形参至多只能指定一次默认实参
void feed(int rice = 5);void feed(int rice){ cout << "feed rice " << rice << endl;}
不同source file中同一函数声明可指定不同默认实参
file1.cpp
void feed(int rice = 5);
file2.cpp
void feed(int rice = 8);
同一source file中每个形参至多只能指定一次默认实参,并且符合“可以为一个或多个形参定义默认值,如果有一个形参具有默认实参,那么此形参后所有形参(如果还有)都必须具有默认实参”规则
void feed(int rice, int meat = 8);void feed(int rice = 5, int meat);void feed(int rice, int meat){ cout << "feed rice " << rice << " and " << "meat " << meat << endl;}
注:第1个feed声明指定meat默认实参,第2个feed声明时,meat已具有默认实参,第3个feed声明时,rice和meat都具有默认实参,正确
默认实参使用非法
同一source file中为形参多次指定默认实参(即使多次指定的默认实参相同,因为默认实参是表达式,不一定是常量,因此编译期不知道默认实参值),编译器不知道使用哪个函数声明中默认实参
void feed(int rice = 5);void feed(int rice = 8){ cout << "feed rice " << rice << endl;}
不符合“可以为一个或多个形参定义默认值,如果有一个形参具有默认实参,那么此形参后所有形参(如果还有)都必须具有默认实参”规则
void feed(int rice = 5, int meat);void feed(int rice, int meat = 8);void feed(int rice, int meat){ cout << "feed rice " << rice << " and " << "meat " << meat << endl;}
注:第1个feed声明时,meat没有默认实参,编译error,meat默认实参缺失
匿名形参的默认实参
匿名形参也可具有默认实参,但意义不大
void feed(int = 5, int = 8){ cout << "feed(int, int)" << endl;}void call_feed(){ feed(); feed(5); feed(5, 8);}
0 0
- cpp——复合类型——函数——匿名形参 默认实参
- cpp——复合类型——函数——函数重载
- cpp——复合类型——引用
- cpp——复合类型——函数——运算符重载
- 复合类型 —— 引用
- 复合类型 —— 指针
- c——复合类型——函数
- JavaScript学习——函数的实参和形参
- 【c++primer——15】面向对象编程01——虚函数与默认实参
- C++学习笔记14——默认实参
- swift——复合类型——函数——函数类型
- 第4章——复合类型
- 结构——复合值类型
- 枚举——复合值类型
- 学习C++——复合类型
- 复合类型——引用、指针
- 复合类型——指针和引用
- Go基础编程:复合类型—指针
- 面试题中的坑点
- Professional C++ 03 Designing with Objects 使用对象
- 5-16 求简单交错序列前N项和 (15分)
- 微信公众号开发流程(二)--微信公众平台对接BAE
- C++Primer第五版 第十一章习题答案(21~30)
- cpp——复合类型——函数——匿名形参 默认实参
- 程序员简历修养
- 点集配对 【dp 位运算】
- 项目经验之谈--栈破坏 -- 案例二
- IP报文格式详解
- Java面试题全集(三)
- Restrictions
- Android 获取文件大小
- SqliteHelper