概述
constexpr语法规定
该函数是一个常量表达式
- constexpr修饰的函数
- 在其所有参数都是constexpr时一定返回constexpr
constexpr 函数举例
constexpr int get_size() {return 20;}
constexpr int foo = get_size();
//前缀了constexpr后,在编译器编译期间就可以直接将其编译
//正确:foo 是一个常量表达式。
带默认参数值的函数
在定义函数的时候可以在定义的时候就可以给形参一个默认值,如果不给其传递参数的时候函数就用其默认值。
举例:
int add(int x = 5,int y = 6){
return x + y;
}
int main(){
add(10,20);
//10+20
add(10);
//10+6
add();
//5+6
}
注意:
- 有默认参数的形参必须列在形参列表的最右,即默认参数值的右面不能有无默认值的参数
- 调用时实参与形参的结合次序时从左到右
例如:
int add(int x,int y = 5,int z = 6); //正确
int add(int x = 1,int y = 5,int z); //错误
int add(int x = 1,int y,int z = 6); //错误
关于函数得调用:
- 如果一个函数有原型声明,且原型声明在定义之前,则默认参数值应该在函数原型声明中给出;
- 如果只有函数的定义,或者函数定义在前,则默认参数值可以在函数定义中给出。
例如:
int add(int x = 5, int y = 6);
//原型声明在前
int main(){
add();
}
int add(int x, int y){
//此处不能定义默认值
return x + y;
}
/
int add(int x = 5,int y = 6){
//定义在调用之前,可以直接给出初始值
return x + y;
}
int main(){
add();
}
函数重载
C++ 允许功能相近得函数在相同得作用域内以相同得函数名声明,从而形成重载。方便使用,便于记忆
int add(int x,int y);
float add(float x, float y);
//两者的类型不同,但是函数名是一样,但是参数表不同。
/
int add(int x,int y);
int add(int x,int y,int z);
注意事项:
-
重载函数的形参必须不同:个数不同或者类型不同
-
编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。
例如:
int add(int x,int y);编译器不以形参名来区分
int add(int a,int b);int add(int x,int y);编译器不以返回值来区分
void add(int x,int y); -
不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。这样不好
例如:
int add(int x,int y){
return x + y;
}
float add(float x,float y){
return x - y;
}
C++ 系统函数
可以在程序书写过程中直接调用,但是需要将相应的头文件包含进来
- 求平方根函数(sqrt)
- 求绝对值函数(abs)
- …
最后
以上就是怕黑母鸡为你收集整理的C++ constexpr函数、带默认参数值的函数、函数重载的全部内容,希望文章能够帮你解决C++ constexpr函数、带默认参数值的函数、函数重载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复