• [C++程序设计]有默认参数的函数


    实参与形参的结合是从左至右顺序进行的。因此指定默认值的参数必须放在形参表列中的最右端,否

    则出错。例如:

    void f1(float a,int b=0,int c,char d=′a′); //不正确

    void f2(float a,int c,int b=0, char d=′a′); //正确

    在调用有默认参数的函数时,实参的个数可以与形参的个数不同,实参未给定的,从形参的默认值得到值

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int max(int a, int b, int c = 0);
     5 
     6 int main()
     7 {
     8     int x = 01, y = -20, z = 40, m;
     9     m = max(x, y);
    10     cout << " x, y of max is " << m << endl;
    11     m = max(x, y, z);
    12     cout << " x, y,z of max is " << m << endl;
    13     return 0;
    14 }
    15 
    16 int max(int a, int b, int c)
    17 {
    18     if(b > a) a = b;
    19     if(c > a) a = c;
    20     return a;
    21 }

    在使用带有默认参数的函数时有两点要注意:

    (1) 如果函数的定义在函数调用之前,则应在函数定义中给出默认值。如果函数的定义在函数调用之后,则在函数调用之前需要有函数声明,此时必须 在函数声明中给出默认值,在函数定义时可以不给 出默认值

    (2) 一个函数不能既作为重载函数,又作为有默认 参数的函数。因为当调用函数时如果少写一个参数,系统无法判定是利用重载函数还是利用默认参数的函数,出现二义性,系统无法执行。

  • 相关阅读:
    LeetCode153.寻找旋转排序数组中的最小值
    LeetCode88.合并两个有序数组
    分析树
    LeetCode119.杨辉三角 II
    ssh传输文件
    ubuntu arm妙算加载cp210x驱动
    terminator终端工具
    ros使用rplidar hector_mapping建地图
    launch文件
    eclipse配置ros cakin编译环境
  • 原文地址:https://www.cnblogs.com/galoishelley/p/3850569.html
Copyright © 2020-2023  润新知