Sorry for turning to here for such a basic question, but can someone just quickly clear this up for me? I’ll then delete the thread so as not to cause noob clutter.
In the following example from the C++ Primer Plus text, doesn’t the & operator in the function declaration designate that the function returns a pointer to a Stock object? Why then does the function proceed to return the s and this objects by value instead?
“…What you want to return, however, is not this, because this is the address of the object. You want to return the object itself, and that is symbolized by *this. (Recall that applying the dereferencing operator * to a pointer yields the value to which the pointer points.) Now you can complete the method definition by using *this as an alias for the invoking object.”
const Stock & Stock::topval(const Stock & s) const {
if (s.total_val > total_val)
return s; // argument object
else
return *this; // invoking object
}
Yeah, that’s confusing. C++ massively overloads every symbol, because there just aren’t enough symbols on the keyboard.
The ampersand
&is used for two different meanings which are conceptually similar, but are actually completely different language features.Meaning 1: Reference type declaration. Append an ampersand to type A which means a-reference-to-type-A. Example:
Meaning 2: Address-of operator. A unary operator that returns a pointer to its argument. Example:
Reminder: References and pointers are exactly the same thing, except they have different syntax, and references can never be null, and you can’t have a reference to a reference.
Don’t delete this thread, we love n00bs. I’m a n00b myself.