温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++缺省参数与函数重载怎么调用

发布时间:2023-04-24 16:57:40 来源:亿速云 阅读:70 作者:iii 栏目:开发技术

这篇文章主要讲解了“C++缺省参数与函数重载怎么调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++缺省参数与函数重载怎么调用”吧!

    一.缺省参数


    1.概念

    缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时:

          a.如果没有指定实参则采用该形参的缺省值;

          b.否则使用指定的实参。

    例:

    C++缺省参数与函数重载怎么调用

    2.分类

    a.全缺省参数:函数的所有参数都是缺省参数。

    //全缺省参数
    void func(int a=10,int b=20)
    {
        return a+b;
    }

    b.半缺省参数:函数的部分参数是缺省参数,并不是非得有一半是缺省参数。

    //半缺省参数
    void func(int a,int b=20,int c=10)
    {
        return a+b+c;
    }

    3.注意

    a.缺省参数是从右往左,所以不能隔着给;

    b.函数传参是从左往右,所以不能跳着传参;

    c.函数的声明和定义不能同时出现缺省参数,只能在声明出现,定义不能出现;

    d.缺省值必须是常量或是全局变量。

    二.函数重载

    先来讲讲重载在生活中的例子。

    简单来说就是一个词的不同意思,我们来看一个笑话吧:

                国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!

    同一词”谁也赢不了“,表达的却是不同的意思,这就是重载。

    1.概念

    函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名数;

    特点:

              a.同名

              b.参数的类型,个数,类型顺序不同

              c.与返回值是否相同无关

    注意:函数中有缺省参数也可以认为是函数重载;

    例:

    void func()
    {
        cout << 1 << endl;
    }
     
    void func(int a = 10)
    {
        cout << 10 << endl;
    }
     
    //但这种情况要注意,如果这样调用函数:func(),就会报错

    如果使用不当,会造成这个错误:

    C++缺省参数与函数重载怎么调用

    注意以下情形并不构成函数重载:

    int add(int a, int b)
    {
        return a + b;
    }
     
    int add(int b, int a)
    {
        return a + b;
    }

    至于为什么不构成,这就涉及到函数重载的原理了,下面让我们一起来看看函数重载的原理吧。

    2.C++支持函数重载的原理

    C++编译器中,调用函数时,不是直接用函数名,而是会对函数名进行修饰,根据修饰后的调用函数。而C编译器并不会对函数进行修饰,它是直接用函数名来调用函数的,所以C不支持函数重载。

    所以上述不构成函数重载的情形就得到了解释。

    不同环境下的修饰规则不同,vs的较为复杂,这里以Linux的修饰规则为例

    Linux的修饰规则

    _Z+函数名的长度+函数名+参数类型的第一个字母

    void  func(int a,double b);
    //Linux环境下修饰后的:_Z4funcid

    感谢各位的阅读,以上就是“C++缺省参数与函数重载怎么调用”的内容了,经过本文的学习后,相信大家对C++缺省参数与函数重载怎么调用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    c++
    AI