当前位置 博文首页 > Zhi Zhao的博客:C++入门基础教程(三):函数高级

    Zhi Zhao的博客:C++入门基础教程(三):函数高级

    作者:[db:作者] 时间:2021-08-08 13:08

    目录

    前言

    一、函数默认参数

    二、函数占位参数

    三、函数重载

    结束语


    前言

    博主通过对C++基础知识的总结,有望写出深入浅出的C++基础教程专栏,并分享给大家阅读,今后的一段时间我将持续更新C++入门系列博文,想学习C++的朋友可以关注我,希望大家有所收获。

    一、函数默认参数

    语法:返回值类型 函数名 (参数=默认值) { }

    如果自己传入参数,就用自己的数据,如果没有,则用默认值。

    int func(int a, int b = 20, int c = 30)
    {
    	return a + b + c;
    }
    
    int main()
    {
    	cout << func(10) << endl;  // b、c有默认值
    	system("pause");
    	return 0;
    }

    注意事项:

    (1)如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值;

    (2)如果函数声明有默认参数,函数实现就不能有默认参数,声明和实现只能是其中一个有默认参数。

    二、函数占位参数

    语法:返回值类型 函数名 (数据类型) { }

    void func(int a, int)
    {
    	cout << "this is func" << endl;
    }
    
    // 函数调用中的第二个实参必须传入一个整型数据
    func(10,20);

    三、函数重载

    作用:函数名可以相同,提高复用性。

    条件:

    (1)同一个作用域下;

    (2)函数名相同;

    (3)函数参数类型不同或者个数不同或者顺序不同。

    // 同一个作用域下,函数名相同
    void func()
    {
    	cout << "func的调用" << endl;
    }
    void func(int a)
    {
    	cout << "func(int a)的调用" << endl;
    }
    void func(double a)
    {
    	cout << "func(double a)的调用" << endl;
    }
    void func(int a,double b)
    {
    	cout << "func(int a,double b)的调用" << endl;
    }
    void func(double a, int b)
    {
    	cout << "func(double a, int b)的调用" << endl;
    }
    // 函数的返回值不可以作为函数重载的条件
    int func(double a, int b)  // 错误
    {
    	cout << "func(double a, int b)的调用" << endl;
    }

    注意事项:

    (1)引用作为重载的条件;

    // 引用作为重载的条件
    void func(int &a)
    {
    	cout << "func(int &a)的调用" << endl;
    }
    void func(const int &a)
    {
    	cout << "func(const int &a)的调用" << endl;
    }
    
    int a = 10;
    func(a);    // func(int &a)的调用
    func(10);   // func(const int &a)的调用

    (2)函数重载碰到默认参数,出现二义性,编译器会报错。

    // 函数重载碰到默认参数
    void func2(int a, int b = 10)
    {
    	cout << "func(int a, int b = 10)的调用" << endl;
    }
    void func2(int a)
    {
    	cout << "func(int a)的调用" << endl;
    }
    
    func2(10);   // 出现二义性,编译器会报错

    结束语

    大家的点赞和关注是博主最大的动力,博主所有博文中的代码文件都可分享给您(除了少量付费资源),如果您想要获取博文中的完整代码文件,可通过C币或积分下载,没有C币或积分的朋友可在关注、点赞和评论博文后,私信发送您的邮箱,我会在第一时间发送给您。博主后面会有更多的分享,敬请关注哦!

    ?

    cs