C++ Academy · Lektion

Hvorfor referencer er aliaser for variabler

Introducér referencer som aliaser på kompileringstidspunktet, der ikke kan bindes om eller være null

Lektion 1 af 413 trin

Hvorfor referencer er aliaser for variabler er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad er en reference

En reference er et alias ved kompilering til en anden variabel. Den er ikke en pointer og ikke en kopi — det er det samme objekt under et andet navn.

Referencesyntaks

Brug & efter typen. Referencer skal initialiseres ved deklarationen og kan ikke bindes om.

int x = 10;
int& ref = x;     // ref is an alias for x
ref = 20;         // x is now 20

Sammenlignet med pointere

Referencer og pointere bruger begge indirekte adgang, men:

  • Referencer skal initialiseres; pointere kan være null
  • Referencer kan ikke tildeles et andet objekt
  • Referencer bruger aldrig * eller -> — de ligner normale variable

Ingen ombinding

Når en reference først er bundet, henviser den altid til det samme objekt. En tildeling til den ændrer den underliggende værdi, ikke selve referencen.

int a = 1, b = 2;
int& r = a;
r = b;       // a becomes 2, r still refers to a

Referencer har samme adresse

En reference opfører sig, som om den var den oprindelige variabel. Når du tager dens adresse, får du adressen på det refererede objekt.

int x = 42;
int& r = x;
std::cout << (&r == &x);   // 1 (true)

Const-referencer

En const-reference er et alias, der kun kan læses. Den er nyttig til at videregive store objekter uden at kopiere dem.

void print(const std::string& s) {
    std::cout << s;  // can read, not modify
}

Binding af const-referencer til midlertidige objekter

En const-reference forlænger levetiden for et midlertidigt objekt, så det lever lige så længe som selve referencen — praktisk i udtryk.

const std::string& greeting = std::string("Hi");
std::cout << greeting;  // valid

Referencer som returtyper

Funktioner kan returnere referencer — det er nyttigt til kædning eller til at give direkte adgang til et medlem. Pas på med at returnere en reference til en lokal variabel!

int& at(std::vector<int>& v, size_t i) {
    return v[i];
}

at(v, 0) = 99;   // modifies v[0]

Returner aldrig en reference til en lokal variabel

Den lokale variabel destrueres, når funktionen returnerer; referencen bliver ugyldig. Det er udefineret opførsel.

// BUG
int& bad() {
    int x = 10;
    return x;  // x dies here
}

Referencer i range-baserede for-løkker

En range-baseret for-løkke bruger implicit referencer. auto& giver en reference; auto giver en kopi.

Referencer i strukturerede bindinger

Strukturerede bindinger i C++17 kan binde efter værdi, efter reference eller efter const-reference.

std::pair<int, int> p = {1, 2};
auto [a, b] = p;            // copies
auto& [x, y] = p;           // references — modifying x changes p.first

Hurtig kontrol

Hvorfor kan en reference ikke bindes om til en anden variabel senere?

Opsummering

En reference er et alias ved kompilering, som skal initialiseres og ikke kan bindes om. Den ligner en normal variabel, er aldrig null og kan aldrig tildeles et andet objekt. Brug const-referencer til skrivebeskyttede visninger.

Gratis at komme i gang

Lær C++ med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “Hvorfor referencer er aliaser for variabler” gratis?

Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “Hvorfor referencer er aliaser for variabler”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Hvorfor referencer er aliaser for variabler”?

Introducér referencer som aliaser på kompileringstidspunktet, der ikke kan bindes om eller være null Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C++ Academy?

Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Hvorfor referencer er aliaser for variabler”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C++ Academy-lektion?

Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvorfor referencer er aliaser for variabler
  2. Pass-by-value kontra pass-by-reference
  3. const-referencer og hvornår de bruges
  4. Referencers levetid og dinglende referencer
← Tilbage til C++ Academy