高质量程序设计指南c++/c语言(26)--默认参数

1、 既可以在函数声明也可以在函数定义中指定默认实参,但是,在一个文件中,只能为一个形参指定默认实参一次。例如下面的程序会出现重复定义错误。

int fun(int a=3,int b=5);

int fun(int a=9,int b)
{
   return a*b;
}

2、函数最终的默认参数是声明和定义的合集。下面这样也是可以的,只是不推荐。

#include<iostream>
using namespace std;

int fun(int a,int b=5);

int fun(int a=9,int b)
{
   return a*b;
}

int main(void)
{
    cout << fun() << endl;
    return 0;
}

3、当函数定义和调用在同一个文件时,如果函数的定义在函数调用之前,则应在函数定义中给出默认值,实际上此时的定义也是声明。如果函数的定义在函数调用之后,则在函数调用之前需要有函数声明,此时必须在函数声明中给出默认值,在函数定义时可以不给出默认值。

4、对于类中的函数,一般在声明的时候给出默认值,否则的话只有在包含定义的文件里这个默认实参才会起作用。

5、对于非类中的函数,在函数声明中定义默认参数的另外一个好处时,可以利用局部声明来随意更改默认参数的值。

#include<iostream>
using namespace std;

int fglobal(int a,int b,int c)
{
     cout<<a<< b <<c<<endl;
     return a;
}


int fglobal(int a,int b=2,int c=5); // 全局的声明

int main(int argc, char* argv[])
{

     //fglobal(); //此时用的全局申明,无第一个参数不行

     fglobal(1);

     int fglobal(int a=2,int b=3,int c=5); // 局部的申明,不管上述默认参数是在定义还是申明中

     fglobal();

     ::fglobal(3); // 此时将采用全局申明

     return 0;
}

 

posted on 2013-05-01 21:59  江在路上2  阅读(226)  评论(0编辑  收藏  举报