Vanlige begreper¶
Enten du er ny til programmering eller bare til C++, vil du møte mange ukjente ord. Denne siden gir en kort, enkel definisjon av dem som brukes i denne boka, med en peker til der hvert enkelt forklares i sin helhet. Den er alfabetisk — bruk søkefeltet øverst for å hoppe rett til et begrep.
| Begrep | Betydning |
|---|---|
| abstrakt klasse | En klasse med minst én ren virtuell funksjon (= 0); den kan ikke opprettes direkte, bare arves fra. Se Polymorfisme. |
| argument | En verdi du sender til en funksjon når du kaller den. Inni funksjonen kommer den fram som en parameter. Se Funksjoner. |
assertion (assert) |
En sjekk av en betingelse som alltid må være sann; hvis den er usann, avbryter programmet. Et verktøy for å fange feil, fjernet i release-bygg. Se Feilhåndtering. |
| tilordning | Å erstatte en variabels nåværende verdi med en ny, f.eks. x = 5. Se Operatorer og uttrykk. |
| auto | Et nøkkelord som lar kompilatoren utlede typen til en variabel fra initialiseringen (auto x = 5; gjør x til en int). Typen er fortsatt fast og sjekkes ved kompilering. Se Variabler og grunntyper. |
| grunntilfelle | Tilfellet i en rekursiv funksjon som kan besvares direkte, uten å rekursere — det er det som stopper rekursjonen. Se Rekursjon. |
| blokk | En gruppe setninger pakket inn i krøllparenteser { }. En blokk definerer et virkeområde. Se Grunnstruktur. |
| breakpoint | En markør som pauser et kjørende program i debuggeren så du kan inspisere det. Se Bruke en debugger. |
| innebygd type | En type språket tilbyr direkte: int, double, bool, char. Se Variabler og grunntyper. |
| capture | [ ]-delen av en lambda som lister hvilke omkringliggende variabler den kan bruke, ved verdi eller ved referanse. Se Lambda-uttrykk. |
| cast | En eksplisitt typekonvertering, f.eks. static_cast<int>(x). Se Operatorer og uttrykk. |
| klasse | En brukerdefinert type som bunter sammen data med operasjonene som virker på dem. Se Klasser. |
| kohesjon | Hvor sterkt delene av én kodebit hører sammen — hvor fokusert den er på én oppgave. Høy kohesjon (ett klart ansvar) er målet. Se Separasjon av ansvar. |
| kompileringstid / kjøretid | Kompileringstid er mens kompilatoren bygger programmet ditt; kjøretid er mens det ferdige programmet kjører. C++ fanger mange feil ved kompileringstid, før programmet i det hele tatt kjører. Se Introduksjon. |
| kompilator / kompilere | Verktøyet som oversetter kildekoden din til et kjørbart program, før det kjører. Se Introduksjon. |
| komposisjon | Å bygge en klasse ved å holde en annen som et medlem (en "has-a") i stedet for å arve fra den. Foretrekk det fremfor arv med mindre forholdet er en ekte "is-a". Se Polymorfisme. |
| const | Et løfte til kompilatoren om at en verdi ikke vil endre seg; kompilatoren håndhever det. Se Variabler og grunntyper. |
| const-korrekthet | Vanen med å merke alt som ikke endrer seg som const — medlemsfunksjoner som bare observerer, referanseparametere du bare leser, lokale variabler du aldri tilordner på nytt — så kompilatoren håndhever hva som kan endres. Et const-objekt kan kalle bare const-medlemsfunksjoner. Se Klasser og Verdier, referanser og pekere. |
| konstruktør | En spesiell medlemsfunksjon som kjører når et objekt opprettes, for å sette opp dets opprinnelige tilstand. Se Klasser. |
| beholder | En type fra standardbiblioteket som holder en samling verdier, som std::vector, std::map eller std::set. Se Datastrukturer. |
| kobling | Hvor mye én kodebit avhenger av detaljene i en annen. Løs (lav) kobling — biter koblet sammen bare gjennom smale grensesnitt — er målet. Se Separasjon av ansvar. |
| dinglende referanse / peker | En referanse eller peker til noe som allerede er ødelagt; å bruke den er udefinert oppførsel og en vanlig årsak til krasj. Se Verdier, referanser og pekere. |
| innkapsling | Å skjule en types indre virkemåte bak et rent grensesnitt ved å gjøre dataene dens private. Se Klasser. |
| enum class | En type med et fast sett navngitte verdier (en scoped enumerasjon); den moderne, typesikre varianten av enum. Se Enumerasjoner. |
| unntak | En måte å signalisere og håndtere feil på, ved hjelp av throw, try og catch. Se Feilhåndtering. |
| uttrykk | Alt som evalueres til en verdi — en literal, en variabel, et funksjonskall, eller disse satt sammen med operatorer (i + j). Se Operatorer og uttrykk. |
| funksjon | En navngitt, gjenbrukbar kodebit som utfører én oppgave. Se Funksjoner. |
| global variabel | En variabel deklarert utenfor alle funksjoner, synlig overalt. Delte, muterbare globale variabler gjør koden vanskelig å følge og teste; foretrekk lokale variabler, parametere og returverdier, og hold varig tilstand inne i et objekt. Globale konstanter er greit. Se Funksjoner. |
| header | En fil (vanligvis .hpp) hvis deklarasjoner deles på tvers av kildefiler via #include. Se Klasser. |
| heap | Minneregionen for verdier hvis størrelse eller levetid bestemmes mens programmet kjører; beholdere og smartpekere håndterer den for deg (unngå rå new/delete). Kontrast stacken. Se Minnehåndtering. |
| IDE | Integrert utviklingsmiljø (Integrated Development Environment) — applikasjonen du skriver, bygger, kjører og debugger kode i. Dette emnet bruker CLion. Se Kom i gang. |
| arv | Å bygge en ny klasse oppå en eksisterende (class Dog : public Animal). Se Polymorfisme. |
| initialisere | Gi en variabel en verdi i det øyeblikket den opprettes. Gjør alltid dette. Se Variabler og grunntyper. |
| iterator | Et objekt som brukes til å gå gjennom elementene i en beholder. Se C++ standardbibliotek. |
| lambda | En liten, navnløs funksjon skrevet rett i koden, ofte gitt til en algoritme. Se Lambda-uttrykk. |
| linker / linking | Byggetrinnet som kombinerer de kompilerte delene og bibliotekene til det ferdige programmet. "Undefined reference" er en linkerfeil. Se Lese kompilatorfeil. |
| Liskovs substitusjonsprinsipp | Designregelen om at en avledet klasse må kunne brukes overalt hvor grunntypen brukes, uten å overraske kode som stoler på grunntypen — en ærlig is-a. Se Polymorfisme. |
| LLM / KI-assistent | En stor språkmodell (ChatGPT, Claude, …) som kan generere kode — nyttig, men selvsikkert feil ofte nok til at du må sjekke den. Se Bruke KI til koding. |
| main | Funksjonen operativsystemet kaller for å starte programmet ditt. Hvert program har nøyaktig én. Se Grunnstruktur. |
| medlemsfunksjon (metode) | En operasjon definert inni en klasse og kalt på et objekt. "Metode" er et synonym. Se Klasser. |
| medlemsinitialiseringsliste | : a(x), b(y)-delen av en konstruktør som gir datamedlemmene sine verdier før kroppen kjører. Se Klasser. |
| move | Å overføre en ressurs fra ett objekt til et annet i stedet for å kopiere den. Se Flyttesemantikk. |
| namespace | En navngitt region som grupperer navn for å unngå kollisjoner. Standardbiblioteket bor i navnerommet std. Se C++ standardbibliotek. |
| NaN | "Not a Number" — et flyttallsresultat av ugyldig matematikk (f.eks. 0.0 / 0.0). Det sammenlignes som usant mot alt, til og med seg selv. Se Flyttall-fallgruver. |
| nullptr | Literalen for en peker som peker på ingenting. Sjekk at en peker ikke er nullptr før du bruker den. Se Verdier, referanser og pekere. |
| objekt / instans | En konkret verdi av en klassetype, laget fra tegningen dens — "instans" er et synonym. En bestemt Motor i minnet er et objekt av klassen Motor. Se Klasser. |
| operator | Et symbol som +, == eller && som utfører en handling inni et uttrykk. Se Operatorer og uttrykk. |
| overlasting | Å definere flere funksjoner med samme navn, men forskjellige parametertyper; kompilatoren velger den riktige. Se Funksjoner. |
| override | Et nøkkelord som markerer en medlemsfunksjon som erstatter en virtuell funksjon i en baseklasse; kompilatoren sjekker at det faktisk finnes en å overstyre. Se Polymorfisme. |
| parameter | En navngitt inndata i en funksjons definisjon. Verdien som oppgis på kallstedet, er argumentet. Se Funksjoner. |
| PATH | Listen over mapper skallet leter gjennom for å finne et program du kjører ved navn. En "command not found" er ofte et PATH-problem. Se Datamaskingrunnlag. |
| peker | En variabel som holder en minneadresse. Den kan være nullptr (peker på ingenting) og må sjekkes før bruk. Se Verdier, referanser og pekere. |
| polymorfisme | Å behandle forskjellige avledede typer gjennom et felles basegrensesnitt, så det samme kallet kjører koden til den riktige typen. Se Polymorfisme. |
| predikat | En funksjon (ofte en lambda) som returnerer true eller false, brukt av algoritmer som find_if. Se Lambda-uttrykk. |
| RAII | "Resource Acquisition Is Initialisation" — knytt en ressurs til et objekt så den frigjøres automatisk når objektet går ut av virkeområdet. Se RAII. |
| rekursjon | En funksjon som kaller seg selv for å løse en mindre versjon av det samme problemet, og stopper ved et grunntilfelle. Se Rekursjon. |
| referanse | Et alias for en eksisterende variabel; den kan aldri være null og refererer aldri til noe annet når den først er satt. Se Verdier, referanser og pekere. |
| Regelen om null (Rule of Zero) | Utform klasser hvis medlemmer styrer seg selv (beholdere, smartpekere) så du ikke trenger å skrive noen spesielle medlemsfunksjoner. Se Klasser. |
| virkeområde | Regionen av kode der et navn er gyldig. En variabel deklarert i en blokk forsvinner når blokken slutter. Se Grunnstruktur. |
| skall | Programmet (PowerShell, bash, zsh, cmd) som tolker kommandoene du skriver i en terminal. Se Datamaskingrunnlag. |
| signatur | En funksjons navn sammen med antallet og typene til parameterne dens — det som skiller én overlasting fra en annen. Se Funksjoner. |
| smartpeker | En RAII-innpakning som eier heap-minne og frigjør det automatisk — std::unique_ptr, std::shared_ptr. Se Minnehåndtering. |
| stack | Minneregionen der lokale variabler og funksjonskall lever; oppføringer frigjøres automatisk når de går ut av virkeområdet. Kontrast heapen. Se Minnehåndtering. |
| stack overflow | Et krasj forårsaket av å bruke opp kallstacken, for eksempel en rekursjon uten et nåbart grunntilfelle. Se Rekursjon. |
| standardbibliotek | Det store settet av typer og funksjoner som følger med C++, alle i navnerommet std. (Beholder- og algoritmedelen kalles uformelt STL.) Se C++ standardbibliotek. |
| setning | Én instruksjon; i C++ avsluttes den med semikolon. Se Grunnstruktur. |
| std | Navnerommet til standardbiblioteket. std::cout betyr "cout, fra std". Se C++ standardbibliotek. |
| struct | Det samme som en class bortsett fra at medlemmene som standard er public. Brukes etter konvensjon for enkle databunter. Se Klasser. |
| template | En mal som genererer funksjoner eller klasser for hvilken type du enn bruker, som std::vector<T>. Se Maler. |
| terminal | Et tekstvindu der du styrer datamaskinen ved å skrive kommandoer i stedet for å klikke. Se Datamaskingrunnlag. |
| udefinert oppførsel | Kode språket ikke gir noen løfter om: den kan krasje, skrive ut søppel, eller virke og bryte sammen senere. Unngå den. Se Variabler og grunntyper. |
| uinitialisert variabel | En variabel opprettet uten en verdi. Å lese en er udefinert oppførsel og en rik kilde til feil — initialiser alltid. Se Variabler og grunntyper. |
| variabel | En navngitt minnebit som holder en verdi av en fast type. Se Variabler og grunntyper. |
| vector | Standardbibliotekets størrelsesjusterbare array, std::vector. Listetypen du griper til som standard. Se C++ standardbibliotek. |
| virtuell funksjon | En medlemsfunksjon en avledet klasse kan overstyre; et kall gjennom en basereferanse eller -peker kjører versjonen til det faktiske objektet. Se Polymorfisme. |