Oletusparametrit
Metodeille
...
(ja
...
myös
...
funktioille)
...
voidaan
...
antaa
...
oletusparametreja,
...
joita
...
käytetään,
...
ellei
...
metodin
...
kutsussa
...
ole
...
annettu
...
kaikkia
...
parametreja.
...
Esimerkki 4. Metodin oletusparametrit.
kuutio.h:
Code Block |
---|
} class CKuutio { public: // Voit kutsua Tilavuus-metodia 1, 2 tai 3:lla parametrilla int Tilavuus(int a, int b = 25, int c = 1); }; {code} |
kuutio.cpp:
Code Block |
---|
} int CKuutio::Tilavuus(int a, int b, int c) // Huom, täällä ei enää anneta oletusparametreja! { printf("pituus=%d, leveys=%d, korkeus=%d - ", a, b, c); return (a * b * c); } {code} |
main.cpp:
Code Block |
---|
} int main() { CKuutio kuutio; int koko = kuutio.Tilavuus(100, 50, 20); printf("Ensimmäinen tulos: %d\n", koko); koko = kuutio.Tilavuus(99, 49); printf("Toinen tulos: %d\n", koko); koko = kuutio.Tilavuus(98); printf("Kolmas tulos: %d\n", koko); } {code} |
Tässä
...
esimerkissä
...
kutsutaan
...
kolme
...
kertaa
...
CKuutio
...
-luokan
...
Tilavuus()
...
-funktiota,
...
antaen
...
sille
...
3,
...
2
...
ja
...
1
...
parametria.
...
Kun
...
funktiolle
...
annetaan
...
vähemmän
...
kuin
...
yksi
...
parametri,
...
niin
...
funktiota
...
suoritettaessa
...
parametri
...
c
...
saa
...
arvon
...
1,
...
kun
...
annetaan
...
kaksi
...
parametria,
...
ja
...
kun
...
annetaan
...
vain
...
yksi
...
parametri,
...
saa
...
c
...
arvon
...
1
...
ja
...
b
...
arvon
...
25.
...
Vakiofunktiot
...
(const
...
member
...
functions)
...
Funktiot,
...
jotka
...
eivät
...
muuta
...
luokan
...
muuttujien
...
tilaa
...
voidaan
...
määritellä
...
vakioiksi
...
(const).
...
Tämä
...
mahdollistaa
...
lisäksi
...
funktion
...
kutsumisen
...
const-tyyppisen
...
olion
...
kautta.
...
Jos
...
const:ksi
...
määritelty
...
funktio
...
kuitenkin
...
yrittää
...
muokata
...
luokan
...
jäsenmuuttujaa,
...
antaa
...
kääntäjä
...
virheilmoituksen
...
ja
...
koodi
...
ei
...
käänny.
...
Yksi
...
olio-ohjelmoinnin
...
periaatteista
...
on
...
sallia
...
vain
...
tarvittavat
...
oikeudet,
...
eli
...
jos
...
luokan
...
jäsenfunktio
...
ei
...
muokkaa
...
luokan
...
tilaa
...
(eli
...
jäsenmuuttujia),
...
niin
...
se
...
tulee
...
merkitä
...
const-tyyppiseksi.
...
Tämä
...
helpottaa
...
koodin
...
tarkistamista
...
virhetilanteissa,
...
sillä
...
osa
...
luokan
...
funktioista
...
voidaan
...
suoraan
...
unohtaa,
...
sillä
...
ne
...
eivät
...
voi
...
muokata
...
luokan
...
tilaa.
...
Esimerkki
...
5.
...
Vakiofunktiot
...
(const).
...
luokka.h:
Code Block |
---|
} class CLuokka { private: int m_Luku; public: CLuokka(); void Tulosta() const; }; {code} |
luokka.cpp:
Code Block |
---|
} CLuokka::CLuokka() : m_Luku(0) { } void CLuokka::Tulosta() const { printf("CLuokka - m_Luku = %d\n", m_Luku); } {code} |
main.cpp:
Code Block |
---|
} int main() { const CLuokka luokka; luokka.Tulosta(); // Voidaan kutsua, sillä funktio on const-funktio. return 0; } {code} |