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;
}
原文链接: https://www.cnblogs.com/zzj3/archive/2013/05/01/3053668.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86690
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!