• 有时多次调用同一个函数时用同样的实参,给形参一个默认值,这样形参就不必一定要从实参取值。
    • 例:

      1. float area(float r =6.5);
      2. area(); //相当于area(6.5);
    • 如不想使形参取此默认值,则通过实参另行给出。

    • 如有多个形参,可使每个形参有一个默认值,也可只对一部分形参指定默认值,另一部分形参不指定默认值。

      • 例:
        1. float volume(float h,float r=12.5); //只对形参r指定默认值
        2. volume(45.6); //相当于volume(45.6,12.5)
        3. volume(34.2,10.4) //h的值为34.2,r的值为10.4
    • 实参与形参的结合是从左到右顺序进行的,因此指定默认值的参数必须放在形参表列中的最右端

      • 例:
        1. void f1(float aint b=0int cchar d=′a′); //不正确
        2. void f2(float aint cint b=0, char d=′a′); //正确
        3. //如果调用上面的f2函数,可以采取下面的形式:
        4. f2(3.5, 5, 3, x′) //形参的值全部从实参得到
        5. f2(3.5, 5, 3) //最后一个形参的值取默认值′a′
        6. f2(3.5, 5) //最后两个形参的值取默认值,b=0,d=′a′
    • 使用带默认参数的函数时要注意:

      • 如函数的定义在函数调用前,则应在函数定义中给出默认值。
      • 如函数的定义在函数调用后,则在函数调用之前必须在函数声明中给出默认值,在函数定义时可以不给出默认值。
      • 函数原型声明时可以不加变量名。
        • 例:int max(int ,int ,int = 0);
      • 一个函数不能既作为重载函数,又作为有默认参数的函数
        • 例:
          1. int max(int a,int b,int c=0)
          2. int max(int a,int b),
          3. max(5,8) //出现二义性,编译报错.
          128ff300a18b87d605f25679100828381e30fdbd_WPS图片.jpg