1) To reveal the address of the first byte of the right-hand side operand.
2) To reference another object that is of the same type.
Here's an example:
1 2 3 4 5 6 7 8 9
// Address:
std::cout << "Address: 0x" << &Variable << std::endl;
// Reference to a variable:
int A( 10 );
int &B( A );
std::cout << B << std::endl;
// B now refers to A. Any changes made to B affect A.