Consider the following code:
//==================================
1 int max( int& n1, int& n2 )
2 {
3 if(n1>n2)
4 return n1 ;
5 else
6 return n2 ;
7 }
8 void main()
9 {
10 int x=1, y=2 ;
11 max( x,y ) = 5 ;
}
//===================================
The can not be complier. Because in line 11, a value is returned which is a const. A const cannot be assigned a new value.
However, if we changed the code in line1 to
int& max(int& n1, int& n2)
The code can be complied and exectuted! Because a reference has been returned, which is either x or y in the main function. That is, returend reference is a variable. Assign a value to a variable is legal.