Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Mikä on Luokan Konstruktori | Konstruktorit ja Destruktorit
C++ OOP
course content

Kurssisisältö

C++ OOP

C++ OOP

1. C++:n OOP:n Perusteet
2. Konstruktorit ja Destruktorit
3. Kapseloinnin Yleiskatsaus
4. Perinnän Yleiskatsaus
5. Polymorfismin Yleiskatsaus

book
Mikä on Luokan Konstruktori

Note
Määritelmä

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

student.h

copy
12345678
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

main.cpp

copy
1234567891011121314
#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.

Note
Huomio

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

main.cpp

copy
123456789101112
#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ä.

Note
Huomio

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.

question mark

Milloin konstruktori kutsutaan?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

course content

Kurssisisältö

C++ OOP

C++ OOP

1. C++:n OOP:n Perusteet
2. Konstruktorit ja Destruktorit
3. Kapseloinnin Yleiskatsaus
4. Perinnän Yleiskatsaus
5. Polymorfismin Yleiskatsaus

book
Mikä on Luokan Konstruktori

Note
Määritelmä

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

student.h

copy
12345678
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

main.cpp

copy
1234567891011121314
#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.

Note
Huomio

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

main.cpp

copy
123456789101112
#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ä.

Note
Huomio

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.

question mark

Milloin konstruktori kutsutaan?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
some-alt