Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Vad Är en Klasskonstruktor | Konstruktorer och Destruktorer
C++ OOP

book
Vad Är en Klasskonstruktor

Note
Definition

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

student.h

copy
class Student {
public:
Student() {
name = 'Default';
}

std::string name;
};
12345678
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

main.cpp

copy
#include <iostream>

class Example {
public:
Example()
{
std::cout << "Object was created!";
}
};

int main()
{
Example obj;
}
1234567891011121314
#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.

Note
Notering

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

main.cpp

copy
#include <iostream>

class Example {
public:
int value;
};

int main()
{
Example obj; // Default constructor
std::cout << obj.value;
}
123456789101112
#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.

Note
Observera

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.

question mark

När anropas konstruktorn?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt