L'initialisation de la variable en C++ la fonction d'en-tête

J'ai rencontré certains de code C++ qui ressemble à ceci (simplifiée de ce post):

(Voici le prototype de fonction situé dans someCode.hpp)

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

(Ici de la première ligne du corps de fonction situé dans someCode.cpp que #include's someCode.hpp)

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

Puis-je légalement someFunction à l'aide de:

someFunction(*ptr1, *ptr2);

et/ou

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

où les variables ptr1, ptr2, val, et val2 ont été définis de façon appropriée et val1 et val2 n'est pas égal à zéro? Pourquoi ou pourquoi pas?

Et si c'est légal, c'est cette syntaxe préféré vs surcharger une fonction de compte pour les paramètres facultatifs?

OriginalL'auteur Evan | 2011-05-13