Kursusindhold
C++ OOP
C++ OOP
Hvad er en konstruktør for klassen
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
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
#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.
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
#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.
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.
Tak for dine kommentarer!