• 【C++编程语言】之函数的默认参数,占位参数,函数重载


    1.函数的默认参数

    ​ 在c++中,函数的形参列表中形参是可以有默认值的

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

    int func(int a,int b,int c){
        return a+b+c;
    }
    int func1(int a,int b=20,int c=30){
        return a+b+c;
    }
    int main(){
        cout << func(10,20,30) << endl;//结果是60
        cout << func1(10) << endl;//结果是60,如果函数有默认参数,可以少传参数
        cout << func1(10,30) << endl;//结果是70,函数有默认参数,如果我们自己传入数据,
        							//就用我们自己传入的,如果没有就用默认的。
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    注意事项:

    ​ 1.如果某个位置已经有了默认参数,那么从左到右都必须有默认参数

    ​ 2.如果函数声明有默认参数,函数的实现就不能有默认函数(两者不能共存)

    2.函数占位参数

    ​ C++中函数的形参列表可以有占位参数,用来占位,调用函数时必须填补该位置。

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

    ​ 占位参数也可以有默认参数

    void func(int a,int//占位参数){}
    void func1(int a,int = 10//占位默认参数){}
    
    • 1
    • 2
    3.函数重载

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

    函数重载满足条件

    ​ 1.同一个作用域下。

    ​ 2.函数名称相同。

    ​ 3.函数参数类型不同或者个数不同或者顺序不同

    注意事项:函数的返回值不同不能作为函数重载的条件。

    //以下都是函数重载
    int function(){
        cout<<"function的调用"<< endl;
    }
    int function(int a){
        cout<<"function的调用"<< endl;
    }
    int function(double a){
        cout<<"function的调用"<< endl;
    }
    int function(int b,double a){
        cout<<"function的调用"<< endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意事项:函数重载碰到引用和函数默认参数。

    //引用
    int function(int &a){
        cout<<"function &a 的调用"<< endl;
    }
    int function(const int &a){
        cout<<"function const &a 的调用"<< endl;
    }
    int main(){
        int a = 10;
        function(a);//是调用第一个,const是只读的一般,不会给变量
        function(10)//是调用第二个,因为第一个是 int &a = 10不合法
         //而第二个是 int temp = 10; int &a = temp;
    }
    
    //函数默认参数
    int function(int a,int b=10){
        cout<<"function a  b的调用"<< endl;
    }
    int function(int a){
        cout<<"function a的调用"<< endl;
    }
    int main(){
        int a = 10;
        function(a);//错误了,此时上面两个都可以调用报错了。
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    数据库系统工程师------流水线
    LeetCode每日一题——813. 最大平均值和的分组
    Selenium基础 —unittest单元测试框架
    苍穹外卖-day05
    ​目标检测算法——YOLOv5/YOLOv7改进之结合​SOCA(单幅图像超分辨率)
    手机端实现触摸拖拽效果
    ssm+vue+elementUI 基于微信小程序的游戏美术外包管理信息系统-计算机毕业设计
    AI 绘画整体认知
    js看代码说输出
    PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
  • 原文地址:https://blog.csdn.net/kaszxc/article/details/126569330