Not sure what your two choices really represent. The actual code in alternative 1 is incorect:
Code:
void SendQuery(std::string,&Database);
, you probably mean:
Code:
void SendQuery(std::string,Database&);
If my "probably mean" is what you actually mean, then this:
Code:
void SendQuery( std::string Query, Database& db );
is exactly the same - the only difference is that you give anyone (including yourself) reading the function prototype a clue as to what the string (and to some extent) argument(s) are referring to.
There will be absolutely no difference in speed whether you mention the parameter name or not, nor will the compiler produce any different code if you put the same or different names for the parameters in different places where they are mentioned [but it helps us humans that have a more complex associative memory than the compiler to understand that we really mean the same thing if it's called the same thing across different points].
--
Mats