|
Posted by Summercool on 09/28/07 15:43
sorry, the message was accidentally posted before it was complete:
First of all, I think in the very traditional and basic form of
"reference", it means "pointers".
So that's why in C,
when you say
int *ip;
ip is a pointer or "reference" to an integer. and that's why when you
use it to get back the integer, you need to do *ip and that's called
"dereference".
So in C++, it seems that there is a different kind of reference, and
that's like an alias type of reference? So in C++, Java, and PHP, you
can have
a = 10; b = 20;
int i = a;
int &j = i;
printf "%d", j; and you get 10?
j = b;
printf "%d %d", i, j; and both are 20 now?
that's different from the traditional pointer reference
a = 10; b = 20;
int *ip = &a; // ip pointers to an integer
int *jp = ip; // jp pointers to the same integer
printf "%d", *jp; // print 10
jp = &b; // now jp pointer to a different integer
printf "%d %d", *ip, *jp; // now it prints 10 and 20
the first behavior is the same as PHP's
$a =& $b
the second behavior is the same as PHP5's object assignment:
$obj1 = $obj2
so it seems like both are called a reference?
Isn't there standard names for their difference? The first one is
more like "an alias reference". The second one is like "a pointer
reference". I think calling them the same as "reference" is very
dangerous as they mean different things and behave differently.
some discussions:
http://en.wikipedia.org/wiki/C%2B%2B_reference
http://en.wikipedia.org/wiki/Reference_%28computer_science%29
[Back to original message]
|