Wiki Markup |
---|
h2. Oletusparametrit
Metodeille |
Oletusparametrit
...
(ja myös funktioille) voidaan antaa oletusparametreja, joita käytetään, ellei metodin kutsussa ole annettu kaikkia parametreja |
...
Esimerkki 4. Metodin oletusparametrit.
. !oletusparametrit.png|border=1! h3. Esimerkki 4. Metodin oletusparametrit. kuutio.h: |
...
{code |
} 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 |
} 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 |
} 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. |
...
h2. 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. h3. |
...
Esimerkki 5. Vakiofunktiot (const). |
...
luokka.h: |
...
{code |
} class CLuokka { private: int m_Luku; public: CLuokka(); void Tulosta() const; }; {code} luokka.cpp: |
...
{code |
} CLuokka::CLuokka() : m_Luku(0) { } void CLuokka::Tulosta() const { printf("CLuokka - m_Luku = %d\n", m_Luku); } {code} main.cpp: |
...
{code |
} int main() { const CLuokka luokka; luokka.Tulosta(); // Voidaan kutsua, sillä funktio on const-funktio. return 0; } {code} |