110 likes | 212 Views
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.
E N D
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