Possible Duplicate:
Difference between pointer variable and reference variable in C++
I am reading about the book "Inside the C++ Object Model" by Stanley Lippman. What puzzles me is the difference between a "reference" of an object and a "pointer" to an object. I know that a reference must be initialized when declared, while a pointer could be left for later initialization. But I want to know the physical implementation difference between them.
Why should there be the "reference" mechanism; isn't it overlapping the function of a pointer? Under what circumstance should we use reference other than pointer? Many thanks.
Reference is from the semantic perspective.
Pointer is from the implementation perspective.
It's kind of like the relation between what and how.
Most references are implemented using a pointer variable i.e. a reference usually takes up one word of memory. However, a reference that is used purely locally can - and often is - eliminated by the optimizer. For example:
struct S { int a, int b[100]; };
void do_something(const vector<S>& v)
{
for (int i=0; i<v.size(); ++i) {
int*& p = v[i].b;
for (int j=0; j<100; ++j) cout <<p[j];
}
In this case, p needs not be stored in memory (maybe it just exists in a register, maybe it disappears into the instructions).