C++函数默认参数

声明是用户可以看到的部分,客户非常信任地使用这个特性,希望得到一定的结果,但是你在实现里使用了不同的缺省值,那么将是灾难性的。因此编译器禁止声明和定义时同时定义缺省参数值

类的成员函数的参数表在声明时默认参数位于参数表右部,如int fn(int a,int b=0,int c=5)之类的,但在它定义的时候则不能加默认参数,只能写int fn(int a,int b,int c);

若声明时没有定义缺省参数值,那么在定义成员函数时可以定义缺省参数值。但这种情况通常用户是看不见的,因此应避免。

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

实践证明,缺省参数可以在定义中,也可以在声明中,只要全局的声明和定义中只有一个带参数即可

局部的声明中可以随便改变默认参数(不管上述默认参数是在定义中还是在声明中)。在下一次改变之前,此参数将一直生效,并将覆盖全局的申明。若要使用全局的声明默认参数,可以加“::”

例如:

//int fglobal(int a,int b=2,int c=5)

//redefinition of default parameter : parameter 3

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 CAbc::m_abc=1000;

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

{

CAbc a;

a.fn();

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

fglobal(1);

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

fglobal();

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

return 0;

}

//205

//125

//235

//325

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值