zoukankan      html  css  js  c++  java
  • C++默认参数函数及函数重载

    有默认参数函数

    1.什么是有默认参数函数
    一般情况下,C语言中在函数调用时形参从实参取得,但是在C++中提供一种简单处理方法给形参一个默认值,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。

    2.代码实现:

    #include<iostream>
    using namespace std;
    
    void fun(int a = 1,int b = 2)
    {
        cout << a <<endl;
        cout << b <<endl;
        return;
    }
    
    int main()
    {
        fun();       //未传入参数,使用默认值
        fun(3,4);    //传入参数时,使用传入的参数
    }

    运行结果:
    这里写图片描述

    3.由于实参与形参的结合是从左到右顺序进行,所以有默认值的形参必须放在最右侧。

    例:

    void fun(int a = 1,int b)   //错误
    void fun(int b,int a = 1)   //正确

    同样的,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。

    4.当函数调用在函数定义前时,需要在函数声明时给出默认值,此时,在函数定义时就不需要给出默认值。
    如果在声明函数时给出了默认值,在定义函数时也给出了默认值不同编译器可能给出报错信息,所以建议只在函数声明时给出默认值以避免混淆。

    函数重载

    1.什么是函数重载?

    在C++中一个函数名可以定义多个函数,这些函数根据传入参数个数及类型进行调用,这就是函数的重载。即对一个函数名增加定义,使一个函数名可以有多种用途。

    2.代码实现:

    int add(int a,int b)         //int类型变量加法
    {
        return a+b;
    }
    
    double(double a, doublr b)   //重载后增加double类型加法
    {
        return a+b;
    }
    • 注:

      • 当函数重载时不能只有函数类型相同,而参数个数,类型,顺序全相同;

        • 因为当这样定义函数后,编译系统无法判断到底使用哪一个函数。
      • 当函数重载时传参个数,参数类型,参数顺序不允许全部相同;

        • 同样的定义参数全相同的重载函数后,编译系统无法判断到底使用哪一个函数。
      • 当函数重载时,尽量使函数作用相近或同;

        • 提高程序可读性,便于理解、阅读。
      • 函数不能既为重载函数,又为有默认参数函数。

        • 当未传入参数时,系统无法判定调用哪一个参数。
    错误示范1:
    int fun(int a)
    
    void fun(int a)//不允许只有函数类型相同,错误
    错误示范2:
    int fun(int a = 1int fun(int a = 1,int b = 2)//函数不能既为重载函数,又为有默认参数函数。错误
  • 相关阅读:
    C#中的字符串处理
    c#复习
    git 取消对某个文件的跟踪
    react 脚手架 立即可以写业务 react + react-router-dom + less + axios + antd
    vue 脚手架 立即可以写业务 vue + vue-router + less + axios + elementUI + moment
    mac 在命令行 用webstorm打开文件
    React create-react-app Build fails after eject: Cannot find module '@babel/plugin-transform-react-jsx'
    微信小程序 canvas 文字自动换行
    微信小程序 canvas 文字居中
    微信小程序 canvas 绘制圆形状
  • 原文地址:https://www.cnblogs.com/D-Rui/p/9769183.html
Copyright © 2011-2022 走看看