zoukankan      html  css  js  c++  java
  • C++解析(6):函数参数的扩展

    0.目录

    1.函数参数的默认值

    2.函数默认参数的规则

    3.函数占位参数

    4.小结

    1.函数参数的默认值

    • C++可以在函数声明时为参数提供一个默认值
    • 当函数调用时没有提供参数的值,则使用默认值

    参数的默认值必须在函数声明中指定

    运行以下程序:

    #include <stdio.h>
    
    int mul(int x = 0);
    
    int main()
    {
        printf("%d
    ", mul());
        printf("%d
    ", mul(-1));
        printf("%d
    ", mul(2));
        
        return 0;
    }
    
    int mul(int x)
    {
        return x * x;
    }
    

    运行结果如下:

    [root@bogon Desktop]# g++ test.cpp
    [root@bogon Desktop]# ./a.out 
    0
    1
    4
    

    以下这两种情况都会报错:
    (我们在定义函数默认参数值的时候只需要在声明的时候给出,在定义的时候不给出,这样是符合语法的。如果在声明时不给出,只在定义时给出,也会报错。)

    #include <stdio.h>
    
    int mul(int x = 0);
    
    int main()
    {
        printf("%d
    ", mul());
        printf("%d
    ", mul(-1));
        printf("%d
    ", mul(2));
        
        return 0;
    }
    
    int mul(int x = 5)
    {
        return x * x;
    }
    
    #include <stdio.h>
    
    int mul(int x);
    
    int main()
    {
        printf("%d
    ", mul());
        printf("%d
    ", mul(-1));
        printf("%d
    ", mul(2));
        
        return 0;
    }
    
    int mul(int x = 5)
    {
        return x * x;
    }
    

    2.函数默认参数的规则

    • 参数的默认值必须从右向左提供
    • 函数调用时使用了默认值,则后续参数必须使用默认值

    3.函数占位参数

    在C++中可以为函数提供占位参数

    • 占位参数只有参数类型声明,而没有参数名声明
    • 一般情况下,在函数体内部无法使用占位参数

    函数占位参数的意义:

    • 占位参数与默认参数结合起来使用
    • 兼容C语言程序中可能出现的不规范写法

    下面的两种声明方式等价吗?
    void func(); <——> void func(void);
    回答:在C语言中是不等价的,在C++中是等价的!

    通过占位参数与默认参数的结合使用,就可以兼容C语言中的不规范的的写法,并且能够编译通过了。

    #include <stdio.h>
    
    void func(int = 0, int = 0){}
    
    int main()
    {
        func();
        func(1, 2);
        
        return 0;
    }
    

    4.小结

    • C++中支持函数参数的默认值
    • 如果函数调用时没有提供参数值,则使用默认值
    • 参数的默认值必须从右向左提供
    • 函数调用时使用了默认值,则后续参数必须使用默认值
    • C++中支持占位参数,用于兼容C语言中的不规范写法
  • 相关阅读:
    体检前注意事项
    SSO之CAS单点登录详细搭建教程
    如何通过session控制单点登录
    谈谈防止Ajax重复点击提交
    js判断是移动端还是pc端
    HttpClient通过GET和POST获取网页内容
    HttpClient 4.x 执行网站登录并抓取网页的代码
    360每日自动签到,领取积分 (java httpclient4.x)
    Java @override报错的解决方法
    无开发经验,初学python
  • 原文地址:https://www.cnblogs.com/PyLearn/p/10072896.html
Copyright © 2011-2022 走看看