C++ fra bunden - Del 3

Tags:    c++
Skrevet af Bruger #2853 @ 26.01.2003
Velkommen til min 3. del af C++ fra bunden. I denne del vil du lære hvordan du opretter og bruger constants. Constants er nogenlunde det samme som en variabel. Forskellen ligger dog i at man efter initialisering ikke kan tilføje eller fjerne værdier fra/til den. Constants er gode at bruge, da men let undgår programmerings fejl og logiske fejl. Samtidig vil din compiler også altid opfange ethvert forsøg på at fjerne eller tilføje en værdi fra/til en constant, så der ikke kan opstå nogle uventede fejl.

#define



Der er tre forskellige måde at deklarere en constant på, den første metode stammer fra programmeringssproget C, nemlig #define. Som jeg skrev i en af mine tidligere dele så blev alt som starter med "havelågen" (#) brugt af preprocessoren. Og dette gælder også for #define.
#define bruges på følgende måde:
Fold kodeboks ind/udKode 

Nu har pi så fået værdien 3.1415, og hver eneste gang du skriver pi vil det blive erstattet af 3.1415. Lad os prøve at lave et lille program, som bruger det vi lige har lært:

Fold kodeboks ind/udKode 


Når ovenstående er compiled skulle det gerne udskrive:

Pi er: 3.1415

Ulempen ved at bruge #define er at der er ikke noget type check, vi har på intet tidspunkt deklareret om pi er float, integer eller noget andet, og dette kan let føre til problemer senere hen.

const



Den anden måde er at bruge nøgleordet const når vi deklarerer en variabel.
Fold kodeboks ind/udKode 


Variablen pi er nu en constant, den er af typen float, og indeholder værdien 3.1415. Denne gang ser vores program sådan her ud:

Fold kodeboks ind/udKode 


Når dette er compiled skulle programmeret gerne skrive fuldstændig det samme som vores eksempel med #define. Fordelen ved at bruge const fremfor #define er at der ved const er et check af hvilken type variablen kan indeholde, og dermed er risikoen for en fejl i programmet blevet lavere.

enum



Den 3. måde er ved at bruge enum. Enum kan definere en ny type, og sætter en begrænsning som man selv kan vælge. For eksempel:
Fold kodeboks ind/udKode 


Vi har nu oprettet en ny type som hedder farve. Hver eneste "enumeration" indeholder en integer værdi, som, medmindre andet er specificeret, starter fra 0 af. Dvs. at SORT er ligemed 0, HVIS er ligemed 1 og GUL er ligemed 2.
Men værdierne kan skam også selv specificeres:

Fold kodeboks ind/udKode 


Nu er SORT så 5, HVID er 6, GUL er 7, LILLA er 15 og BRUN er 16.

Fordelen ved at bruge enum, er at værdierne er begrænset til dem som du har sat, og bliver tjekket af compileren

Lad os prøve at lave et simpelt program hvor vi gør brug af enum:
Fold kodeboks ind/udKode 


Når dette program er compiled skulle der gerne stå:

minFarve: 0

Dette gør den fordi at SORT jo indeholder integer værdien 0.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (11)

User
Bruger #3320 @ 08.03.03 21:07
Gode guides! Keep up the good work!
User
Bruger #3769 @ 23.04.03 17:44
agree med Thomas :D
User
Bruger #1748 @ 16.05.03 13:43
mm , glæder mig til næste artikel ;) tak igen!!
User
Bruger #3710 @ 03.12.03 11:18
Det er en god artikel, manglede bare lige at cin bliver beskrevet.
User
Bruger #3710 @ 03.12.03 14:21
Min fejl.. Beskrivelsen af cin står i næste artikle..
User
Bruger #1278 @ 06.03.04 18:31
Total respekteret artikel :P
glæder mig til at læse de 3 sidste afsnit...

til alle dem der får fejl når de compiler: Brug dev-cpp, dte bruger jeg og jeg har aldrig fået en eneste fejl da jeg compilede de koder som står her inde!! ;)
al magt til dev-c++ :D
User
Bruger #5261 @ 27.05.04 16:28
Fin atikkel, men der er en ting jeg ikka kan forstå i det eksempel med const, hvad laver (cin >> "";) der?? den bliver jo ikke brugt
User
Bruger #5956 @ 18.07.04 19:38
Nice artikel, Keep ip ut ffs!
User
Bruger #6850 @ 13.03.05 20:16
hmm fin artikel men....cin får min compiler til at sige der er en fejl så prøvede jeg at fjerne det så virkede :S
User
Bruger #8856 @ 02.03.06 01:54
Top Notch! Rigtig fedt at du forklarer forskellige aproaches til konstanter.
User
Bruger #13938 @ 12.02.12 17:56
den der enum, kan man godt kalde den for en array? Sikkert et dumt spørgsmål xD
Du skal være logget ind for at skrive en kommentar.
t