Вот пример режима передачи в качестве необязательного параметра
void myfunc(int blah, int mode = 0)
{
if (mode == 0)
do_something();
else
do_something_else();
}
, вы можете вызывать myfunc двумя способами, и оба действительны
myfunc(10); // Mode will be set to default 0
myfunc(10, 1); // Mode will be set to 1