Kursinnehåll
C++ OOP
C++ OOP
Vad Är en Klasskonstruktor
Konstruktor är en speciell metod i en klass som anropas när ett objekt skapas. Med den kan du initiera attributen till meningsfulla värden.
Genom att använda konstruktorer kan du förenkla skapandet av objekt. Utan en konstruktor skulle du behöva ställa in varje egenskap individuellt och kanske behöva anropa flera metoder bara för att få objektet i ett användbart tillstånd.
Det primära syftet med en konstruktor är att initiera den nyligen skapade instansen. Den kan ställa in initialvärden för attributen baserat på parametrarna som skickas till konstruktorn, vilket säkerställer att objektet startar i ett giltigt tillstånd.
Syntax för konstruktor
Även om processen att utveckla en konstruktor kan verka enkel, involverar den många specifika överväganden. Det generella tillvägagångssättet för att skapa en är:
student.h
class Student { public: Student() { name = 'Default'; } std::string name; };
Namn: konstruktorn har samma namn som klassen själv;
Returtyp: konstruktorer har ingen returtyp, inte ens
void
;Parametrar: konstruktorer kan ta parametrar och kan överlagras med olika uppsättningar av parametrar för att möjliggöra olika sätt att initiera objekt;
Automatisk anrop: konstruktorn anropas automatiskt av kompilatorn när ett objekt skapas.
Standardkonstruktor
En standardkonstruktor är en konstruktor som kan anropas utan några argument. Så här definieras och används standardkonstruktorer:
main.cpp
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }
Du kan experimentera med koden ovan. Logiken som skrivs i Example()-metoden körs varje gång en instans av klassen skapas.
Försök att lägga till ett till objekt eller ändra logiken inuti konstruktorn.
Om ingen konstruktor definieras genererar kompilatorn en standardkonstruktor. Dess beteende beror på medlemvariablernas typer: fundamentala typer, standardkonstruerbara typer eller användardefinierade typer.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
En attribut är en fundamental datatyp. Den automatiskt genererade standardkonstruktorn initierar inte medlemsvariabler av inbyggda typer. Dessa kommer att ha obestämda värden om du skapar ett objekt och inte uttryckligen initierar dessa fält.
Du kan märka att kompilatorn tillhandahåller ett konsekvent värde för value-variabeln, men standarden kräver inte detta och det är möjligt att den innehåller ett skräpvärde.
Tack för dina kommentarer!