Inicialización de la variable en el encabezado de la función C ++

Me he encontrado con un código C ++ que se ve así (simplificado para esta publicación):

(Aquí está el prototipo de la función ubicado ensomeCode.hpp)

void someFunction(const double & a, double & b, const double c = 0, const double * d = 0);

(Aquí está la primera línea del cuerpo de la función ubicada ensomeCode.cpp ese#include 'ssomeCode.hpp)

void someFunction(const double & a, double & b, const double c, const double * d);

¿Puedo llamar legalmente asomeFunction utilizando

someFunction(*ptr1, *ptr2);

y / o

someFunction(*ptr1, *ptr2, val1, &val2);

donde las variablesptr1, ptr2, val yval2 se han definido adecuadamente yval1 yval2 no es igual a cero? ¿Por qué o por qué no

Y si es legal, ¿se prefiere esta sintaxis a sobrecargar una función para tener en cuenta los parámetros opcionales?

Respuestas a la pregunta(4)

Su respuesta a la pregunta