FAQ
for [no.it.programmering.c++]En Java eller C# referanse har tre viktige egenskaper:
C++ som språk støtter i utgangspunktet ikke punkt C, garbage collection.
int a = 42;
int* p = &a; // 'p' contains the address of 'a'.
*p = 99; // 'a' equals 99.
Pekere gir mulighet for nullpekere og ikke gyldige pekerverdier, så direkte
bruk av pekere bør unngås i den begrensede grad det er mulig.
int a = 42;
int& b = a; // 'b' is now another name for 'a'.
b = 99; // 'a' equals 'b' equals 99.
Referanser brukes mye til parameteroverføring, både for å få enklere notasjon
og fordi et korrekt C++ program ikke kan ha nullreferanser.std::auto_ptr for helt enkel automatisk deallokering,
basert på overføring av eierskap til objektet.
#include <memory> // std::auto_ptr
struct S { /* ... */ };
void f()
{
std::auto_ptr<s> pObject( new S() );
// ...
// Automatic deallocation of pObject when f() returns.
}
Bruk f.eks. boost::shared_ptr (se
[http://www.boost.org]) for mer generell
referansetellingsbasert deallokering, men obs: referansetelling støtter
ikke deallokering av sirkulære datastrukturer.