Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Oletusparametrit

Metodeille

...

(ja

...

myös

...

funktioille)

...

voidaan

...

antaa

...

oletusparametreja,

...

joita

...

käytetään,

...

ellei

...

metodin

...

kutsussa

...

ole

...

annettu

...

kaikkia

...

parametreja.

...

Image Added

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}