Reference to const
We can bind a reference to const to a nonconst object, a literal, or a more general expression:
int i = 42; const int &r1 = i; //bind a const int& to a plain int object const int &r2 = 42; //ok.r1 is a reference to const const int &r3 = r1 * 2; //ok.r3 is a reference to const int &r4 = i * 1; //error.r4 is a plain,nonconst reference
double dval= 30; const int &rDval = dval; dval = 42; cout << rDval << endl; // print 30
The compiler transforms this code into something like:
const int temp = dval; const int &rDval = temp;
In this case, rDval is bound to a temportary object.
原文:http://my.oschina.net/hejunsen/blog/394883