I saw someone using this in one answer:
void methodA(const int*& var);
I couldn't understand what the argument means.
AFAIK:
const int var
=>const int
value which can't be changedconst int* var
=> pointer toconst int
, ie*var
can't be changed butvar
can be changedconst int& var
=> reference toconst int
, ie value ofvar
can't be changed
What does const int*& var
mean? Is const int& *var
also possible?
Can you please give some example as well, like what can and can't be done with it?
UPDATE:
I am not sure if I am thinking the right way, but I began to think of a reference as an alias of the variable that was passed as argument, so:
const int * p;
methodA(p)
=> here we are passing p
as const int *
but we don't know if this is pass by value or what, until we see the definition of methodA
, so if methodA
is like this:
methodA(const int * & p2)
==> here p2
is another name to p
, ie p
and p2
are the same from now on
methodA(const int* p2)
==> here p2
is passed as value, ie p2
is just local to this method
Please correct me if I am thinking the wrong way. If yes, I might need to study some more about this. Can you please point to some nice references?
UPDATE 2:
If some beginner like me wants to know more about this thing, you can use the c++decl / cdecl program from here, which I just discovered to be very useful.
$ c++decl
Type `help' or `?' for help
c++decl> explain const int&* p
declare p as pointer to reference to const int
c++decl> explain const int*& p
declare p as reference to pointer to const int
But, as every one here pointed out, the first example isn't legal in C++.