### Initializing References

The object that you use to initialize a reference must be of the same type as the reference, or it must be of a type that is convertible to the reference type. If you initialize a reference to a constant using an object that requires conversion, a temporary object is created. In the following example, a temporary object of type float is created:

    int i;
    const float& f = i; // reference to a constant float

Attempting to initialize a nonconstant reference with an object that requires a conversion is an error.

Once a reference has been initialized , it cannot be modified to refer to another object. For example:

    int num1 = 10;
    int num2 = 20;

    int &RefOne = num1;         // valid
    int &RefOne = num2;         // error, two definitions of RefOne
    RefOne = num2;              // assign num2 to num1
    int &RefTwo;                // error, uninitialized reference
    int &RefTwo = num2;         // valid

Note that the initialization of a reference is not the same as an assignment to a reference. Initialization operates on the actual reference by initializing the reference with the object it is an alias for. Assignment operates through the reference on the object referred to.

A reference can be declared without an initializer:

- When it is used in an argument declaration
- In the declaration of a return type for a function call
- In the declaration of class member within its class declaration
- When the extern specifier is explicitly used.

You cannot have references to references, references to bit fields , arrays of references, or pointers to references.

Initializing References
Passing Arguments by Reference
Pointers
Declarators
Initializers
Temporary Objects