Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hvad er en konstruktør for klassen | Konstruktører og Destruktører
C++ OOP
course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Hvad er en konstruktør for klassen

Note
Definition

Konstruktør er en speciel metode i en klasse, der kaldes, når et objekt oprettes. Med den kan du initialisere attributterne til meningsfulde værdier.

Ved at bruge konstruktører kan du forenkle oprettelsen af objekter. Uden en konstruktør ville du skulle sætte hver egenskab individuelt og måske skulle kalde flere metoder blot for at gøre objektet brugbart.

Det primære formål med en konstruktør er at initialisere den nyoprettede instans. Den kan sætte de indledende værdier for attributterne baseret på de parametre, der gives til konstruktøren, hvilket sikrer, at objektet starter i en gyldig tilstand.

Syntaks for konstruktør

Selvom processen med at udvikle en konstruktør kan virke ligetil, involverer den adskillige specifikke overvejelser. Den generelle tilgang til at oprette en er:

student.h

student.h

copy
12345678
class Student { public: Student() { name = 'Default'; } std::string name; };
  • Navn: konstruktøren har samme navn som klassen selv;

  • Returtype: konstruktører har ingen returtype, heller ikke void;

  • Parametre: konstruktører kan tage parametre og kan overbelastes med forskellige sæt af parametre for at muliggøre forskellige måder at initialisere objekter på;

  • Automatisk kald: konstruktøren kaldes automatisk af compileren, når et objekt oprettes.

Standardkonstruktør

En standardkonstruktør er en konstruktør, der kan kaldes uden argumenter. Her er hvordan standardkonstruktører defineres og anvendes:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }

Du kan eksperimentere med koden ovenfor. Logikken skrevet i Example()-metoden udføres hver gang, en instans af klassen oprettes.

Note
Bemærk

Prøv at tilføje endnu et objekt eller ændre logikken inde i konstruktøren.

Hvis ingen konstruktør er defineret, genererer compileren en standardkonstruktør. Dens opførsel afhænger af medlemvariabeltyperne: fundamentale typer, standard-konstruktible typer eller brugerdefinerede typer.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }

Et attribut er en fundamental datatype. Den automatisk genererede standardkonstruktør initialiserer ikke medlemsvariabler af indbyggede typer. De vil have ubestemte værdier, hvis du opretter et objekt og ikke eksplicit initialiserer disse felter.

Note
Bemærk

Du kan opleve, at compileren giver en ensartet værdi for value-variablen, men standarden kræver det ikke, og det er muligt, at den vil indeholde en vilkårlig (garbage) værdi.

question mark

Hvornår bliver konstruktøren kaldt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Hvad er en konstruktør for klassen

Note
Definition

Konstruktør er en speciel metode i en klasse, der kaldes, når et objekt oprettes. Med den kan du initialisere attributterne til meningsfulde værdier.

Ved at bruge konstruktører kan du forenkle oprettelsen af objekter. Uden en konstruktør ville du skulle sætte hver egenskab individuelt og måske skulle kalde flere metoder blot for at gøre objektet brugbart.

Det primære formål med en konstruktør er at initialisere den nyoprettede instans. Den kan sætte de indledende værdier for attributterne baseret på de parametre, der gives til konstruktøren, hvilket sikrer, at objektet starter i en gyldig tilstand.

Syntaks for konstruktør

Selvom processen med at udvikle en konstruktør kan virke ligetil, involverer den adskillige specifikke overvejelser. Den generelle tilgang til at oprette en er:

student.h

student.h

copy
12345678
class Student { public: Student() { name = 'Default'; } std::string name; };
  • Navn: konstruktøren har samme navn som klassen selv;

  • Returtype: konstruktører har ingen returtype, heller ikke void;

  • Parametre: konstruktører kan tage parametre og kan overbelastes med forskellige sæt af parametre for at muliggøre forskellige måder at initialisere objekter på;

  • Automatisk kald: konstruktøren kaldes automatisk af compileren, når et objekt oprettes.

Standardkonstruktør

En standardkonstruktør er en konstruktør, der kan kaldes uden argumenter. Her er hvordan standardkonstruktører defineres og anvendes:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }

Du kan eksperimentere med koden ovenfor. Logikken skrevet i Example()-metoden udføres hver gang, en instans af klassen oprettes.

Note
Bemærk

Prøv at tilføje endnu et objekt eller ændre logikken inde i konstruktøren.

Hvis ingen konstruktør er defineret, genererer compileren en standardkonstruktør. Dens opførsel afhænger af medlemvariabeltyperne: fundamentale typer, standard-konstruktible typer eller brugerdefinerede typer.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }

Et attribut er en fundamental datatype. Den automatisk genererede standardkonstruktør initialiserer ikke medlemsvariabler af indbyggede typer. De vil have ubestemte værdier, hvis du opretter et objekt og ikke eksplicit initialiserer disse felter.

Note
Bemærk

Du kan opleve, at compileren giver en ensartet værdi for value-variablen, men standarden kræver det ikke, og det er muligt, at den vil indeholde en vilkårlig (garbage) værdi.

question mark

Hvornår bliver konstruktøren kaldt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1
some-alt