Kursinnhold
C++ OOP
C++ OOP
Hva er en konstruktør for klassen
Konstruktør er en spesiell metode i en klasse som kalles når et objekt opprettes. Med denne kan du initialisere attributtene til meningsfulle verdier.
Ved å bruke konstruktører kan du forenkle opprettelsen av objekter. Uten en konstruktør måtte du sette hver egenskap individuelt og kanskje måtte kalle flere metoder bare for å få objektet i en brukbar tilstand.
Hovedformålet med en konstruktør er å initialisere den nylig opprettede instansen. Den kan sette startverdier for attributtene basert på parameterne som sendes til konstruktøren, og sikrer at objektet starter i en gyldig tilstand.
Syntaks for konstruktør
Selv om prosessen med å utvikle en konstruktør kan virke enkel, innebærer den flere spesifikke hensyn. Den generelle tilnærmingen for å lage 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, ikke engang
void
;Parametere: konstruktører kan ta parametere og kan overbelastes med ulike sett av parametere for å tillate forskjellige måter å initialisere objekter på;
Automatisk kall: konstruktøren kalles automatisk av kompilatoren når et objekt opprettes.
Standardkonstruktør
En standardkonstruktør er en konstruktør som kan kalles uten argumenter. Slik defineres og brukes standardkonstruktører:
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 kjøres hver gang en instans av klassen opprettes.
Prøv å legge til ett objekt til eller endre logikken inne i konstruktøren.
Hvis ingen konstruktør er definert, genererer kompilatoren en standard konstruktør. Dens oppførsel avhenger av medlemvariabeltypene: grunnleggende typer, standard-konstruerbare typer eller brukerdefinerte typer.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
Et attributt er en grunnleggende datatype. Den automatisk genererte standardkonstruktøren initialiserer ikke medlemsvariabler av innebygd type. Disse vil ha ubestemte verdier hvis du oppretter et objekt og ikke eksplisitt initialiserer disse feltene.
Du kan oppleve at kompilatoren gir en konsekvent verdi for value-variabelen, men standarden krever ikke dette, og det er mulig at den vil inneholde en vilkårlig verdi.
Takk for tilbakemeldingene dine!