Delphi og C++ Builder C++ Referencer og pointere
Reference typer En reference er et alternativt navn, eller alias, for et objekt. Bruges især når brugerdefinerede klasser skal anvendes som argumenter eller returtyper fra funktionskald. Notationen int& b … betyder, at b er en reference til en variabel af typen int.
Referencer En reference skal initialiseres, så den er synonym med et eksisterende objekt. Værdien for en reference kan ikke ændres, efter at den er initialiseret. int k = 5; int& b = k; int m = b;// m er 5 b = 12// k (og b) er 12
Referencer Efter initialisering er en reference permanent. int k; int& b = k; b = 5;// k er 5 b++;// k forøges til 6
Referencer Const qualifier kan anvendes i forbindelse med erklæring af en type for at markere, at den ikke må ændres. Const kan også bruges på en reference type. int k = 5; const int& b = k; k = 10;// OK b = 12;// Error
Pointere En variabel (et objekt) repræsenterer et område i hukommelsen, hvis indhold er den værdi, der aktuelt er tildelt variablen. En pointer er en variabel, som indeholder adressen på et andet objekt. Hvis pointeren i sig selv er en erklæret variabel, er den ligeledes repræsenteret ved et område i hukommelsen, der så indeholder en adresse.
Pointere Operatoren & (også kaldet adresse operatoren) kan anvendes i forbindelse med en variabel, og giver så adressen på variablen i stedet for variablens værdi. int tal = 27; int* pTal;// Pointer declarator pTal = &tal; // Address operator
Pointere Indirection operatoren * kan anvendes på en pointer variabel, når man ønsker at få fat på den værdi, som pointeren refererer til. int tal = 27; int* pTal;// Pointer declarator pTal = &tal; int temp = *pTal;
Pointere i C++ Eftersom *pTal repræsenterer et int objekt, må man bruge *pTal overalt, hvor det er lovligt at bruge et int objekt som f.eks. tal. temp = *pTal + 1; cout << *pTal; *pTal = 10;
Pointere i C++ Hvis variablen pTal anvendes i et udtryk, er det pointerens værdi, der er involveret. Ændring af en pointers værdi på denne måde er ikke tilladt i ret mange programmeringssprog. int qTal = pTal;// Kopiér pointer pTal++;// Forøg pointerens værdi
Pointere i C++ Pointere kan kun pege på variabler af den rigtige type. int tal; double z; int* pTal; pTal = &tal;// Lovligt pTal = &z;// Ulovligt - error