Reference Operator: &
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

Reference Operator: &

Holds the address of an object but behaves syntactically like an object.

type-id & cast-expression

A reference declaration consists of an (optional) list of specifiers followed by a reference declarator. A reference must be initialized and cannot be changed.

Any object whose address can be converted to a given pointer type can also be converted to the analogous reference type. For example, any object whose address can be converted to type char * can also be converted to type char &. No constructors or class conversion functions are called to make a conversion to a reference type.

Do not confuse reference declarations with use of the address-of operator. When identifier is preceded by a type, such as int or char, then identifier is declared as a reference to the type. When identifier is not preceded by a type, the usage is that of the address-of operator.

// expre_ReferenceOperator.cpp
// compile with: /EHsc
// Demonstrate reference operator
#include <iostream>
using namespace std;
struct Person {
    char   *Name;
    short Age;

int main() {
   Person Friend;             // Declare the object.
   Person& rFriend = Friend;  // Declare the reference.

   Friend.Name = "Bill";
   rFriend.Age = 40;

   cout << rFriend.Name << " is " << Friend.Age << endl;
© 2015 Microsoft