*** Welcome to piglix ***

Reference (C++)


In the C++ programming language, a reference is a simple reference datatype that is less powerful but safer than the pointer type inherited from C. The name C++ reference may cause confusion, as in computer science a reference is a general concept datatype, with pointers and C++ references being specific reference datatype implementations. The definition of a reference in C++ is such that it does not need to exist. It can be implemented as a new name for an existing object (similar to rename keyword in Ada).

The declaration of the form:

where <Type> is a type and <Name> is an identifier whose type is reference to <Type>.

Examples:

Here, rA and rB are of type "reference to int"

foo() is a function that returns a "reference to int"

bar() is a function with a reference parameter, which is a "reference to int"

MyClass is a class with a member which is reference to int

funcX() is a function that returns a (non-reference type) int and xFunc() is an alias for funcX

const int& ref is a constant reference pointing to a piece of storage having value 65.

Types which are of kind "reference to <Type>" are sometimes called reference types. Identifiers which are of reference type are called reference variables. To call them variable, however, is in fact a misnomer, as we will see.

C++ references differ from pointers in several essential ways:

There is a simple conversion between pointers and references: the address-of operator (&) will yield a pointer referring to the same object when applied to a reference, and a reference which is initialized from the dereference (*) of a pointer value will refer to the same object as that pointer, where this is possible without invoking undefined behavior. This equivalence is a reflection of the typical implementation, which effectively compiles references into pointers which are implicitly dereferenced at each use. Though that is usually the case, the C++ Standard does not force compilers to implement references using pointers.


...
Wikipedia

...