我是靠谱客的博主 怕黑母鸡,这篇文章主要介绍C++ constexpr函数、带默认参数值的函数、函数重载,现在分享给大家,希望可以做个参考。

constexpr语法规定

该函数是一个常量表达式

  • constexpr修饰的函数
  • 在其所有参数都是constexpr时一定返回constexpr

constexpr 函数举例

复制代码
1
2
3
4
5
constexpr int get_size() {return 20;} constexpr int foo = get_size(); //前缀了constexpr后,在编译器编译期间就可以直接将其编译 //正确:foo 是一个常量表达式。

带默认参数值的函数

在定义函数的时候可以在定义的时候就可以给形参一个默认值,如果不给其传递参数的时候函数就用其默认值。
举例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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 }

注意:

  1. 有默认参数的形参必须列在形参列表的最右,即默认参数值的右面不能有无默认值的参数
  2. 调用时实参与形参的结合次序时从左到右
    例如:
复制代码
1
2
3
4
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); //错误

关于函数得调用:

  • 如果一个函数有原型声明,且原型声明在定义之前,则默认参数值应该在函数原型声明中给出;
  • 如果只有函数的定义,或者函数定义在前,则默认参数值可以在函数定义中给出。
    例如:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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++ 允许功能相近得函数在相同得作用域内以相同得函数名声明,从而形成重载。方便使用,便于记忆

复制代码
1
2
3
4
5
6
7
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);
    编译器不以返回值来区分

  • 不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。这样不好
    例如:

复制代码
1
2
3
4
5
6
7
int add(int x,int y){ return x + y; } float add(float x,float y){ return x - y; }

C++ 系统函数

可以在程序书写过程中直接调用,但是需要将相应的头文件包含进来

  • 求平方根函数(sqrt)
  • 求绝对值函数(abs)

最后

以上就是怕黑母鸡最近收集整理的关于C++ constexpr函数、带默认参数值的函数、函数重载的全部内容,更多相关C++内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部