Kurssisisältö
C++ OOP
C++ OOP
Mikä on Luokan Konstruktori
Konstruktori on luokan erityinen metodi, joka kutsutaan, kun olio luodaan. Sen avulla voidaan alustaa attribuutit merkityksellisiin arvoihin.
Konstruktoreiden avulla olioiden luominen voidaan yksinkertaistaa. Ilman konstruktoria jokainen ominaisuus täytyisi asettaa erikseen, ja olion saattaminen käyttökelpoiseen tilaan voisi vaatia useiden metodien kutsumista.
Konstruktorin ensisijainen tarkoitus on alustaa juuri luotu olio. Se voi asettaa attribuuttien alkuarvot konstruktorille annettujen parametrien perusteella, varmistaen että olio alkaa kelvollisessa tilassa.
Konstruktorin syntaksi
Vaikka konstruktorin kehittäminen saattaa vaikuttaa yksinkertaiselta, siihen liittyy useita erityisiä huomioita. Yleinen lähestymistapa konstruktorin luomiseen on seuraava:
student.h
class Student { public: Student() { name = 'Default'; } std::string name; };
Nimi: konstruktorilla on sama nimi kuin luokalla;
Palautustyyppi: konstruktoreilla ei ole palautustyyppiä, ei edes
void
;Parametrit: konstruktorit voivat ottaa parametreja ja niitä voidaan ylikuormittaa eri parametrikokonaisuuksilla, mikä mahdollistaa olioiden alustamisen eri tavoin;
Automaattinen kutsu: konstruktori kutsutaan automaattisesti kääntäjän toimesta, kun olio luodaan.
Oletuskonstruktori
Oletuskonstruktori on konstruktori, joka voidaan kutsua ilman argumentteja. Näin oletuskonstruktorit määritellään ja niitä käytetään:
main.cpp
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }
Voit kokeilla yllä olevaa koodia. Example()-metodissa kirjoitettu logiikka suoritetaan joka kerta, kun luokan olio luodaan.
Kokeile lisätä yksi olio lisää tai muuta logiikkaa konstruktorin sisällä.
Jos konstruktoria ei ole määritelty, kääntäjä luo oletuskonstruktorin. Sen toiminta riippuu jäsenmuuttujien tyypeistä: perusmuuttujatyypit, oletuskonstruktoitavat tyypit tai käyttäjän määrittelemät tyypit.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
Attribuutti on perusmuuttujatyyppi. Automaattisesti luotu oletuskonstruktori ei alustaa sisäänrakennettujen tyyppien jäsenmuuttujia. Näillä on määrittelemättömät arvot, jos luot olion etkä erikseen alusta näitä kenttiä.
Saatat huomata, että kääntäjä antaa value-muuttujalle johdonmukaisen arvon, mutta standardi ei vaadi tätä ja on mahdollista, että muuttuja sisältää roska-arvon.
Kiitos palautteestasi!