也就是在a.h中,需要有这样的声明:

void f(int x , int y = 0);

 

然后在a.cc中,不要有默认参数的声明。

void f(int x, int y){}

这样子。不能两处同时写默认参数。

 

因为默认参数是给调用者看的,所以放在头文件中。

而如果放在cpp文件中,头文件中没有的话,调用的时候就会出现问题。提示缺少参数。

 

原理:

默认参数这个机制,是编译时刻生效的。编译器在声明中找到那个默认的参数,然后偷偷的补上了那个值。

 

default value不安全,尽量不要用。很容易被人修改默认的值。

posted on 2019-03-22 18:37  newbird2017  阅读(1040)  评论(0)    收藏  举报