函数的默认参数,应该在头文件里声明。

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

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

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

void f(int x, int y){}

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

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

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

原理:

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

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

猜你喜欢

转载自www.cnblogs.com/buddho/p/10580294.html