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

Ylikuormitus

...

C+

...

+

...

tarjoaa

...

ohjelmoijalle

...

mahdollisuuden

...

ylikuormittaa

...

funktioita.

...

Tällä

...

tarkoitetaan

...

sitä,

...

että

...

voi

...

olla

...

samannimisiä

...

funktioita,

...

jotka

...

eroavat

...

parametrien

...

lukumäärässä.

...

Kutsuttava

...

funktio

...

tunnistetaan

...

parametrien

...

tyypistä.

...

Muodostimien

...

kanssa

...

käytetään

...

usein

...

ylikuormitusta.

{
Note
}

Palautustyyppiä

ei

voi ylikuormittaa.

Image Added

Esimerkki 1. Funktioiden ylikuormitus.

.h:

Code Block
 ylikuormittaa.{note}
!ylikuormitus.png|border=1!\\
h3. Esimerkki 1. Funktioiden ylikuormitus.

.h:
{code}
class CElain
{
private:   // saatavissa vain luokan metodeilla
    char m_Nimi[100];
    float m_Massa;

public:   // voidaan käyttää luokan ulkopuolelta
    bool AsetaTiedot(char Nimi[], float Massa);   // 'Alkuperäinen metodi'
    bool AsetaTiedot(char Nimi[]);                // 1. Ylikirjoitettu funktio
    bool AsetaTiedot(float Massa);                // 2. ylikirjoitettu funktio
};
{code}

.cpp:

{
Code Block
}
bool CElain::AsetaTiedot(char Nimi[], float Massa)
{
    printf("AsetaTiedot(char[], float)\n");
    AsetaTiedot(Nimi);
    AsetaTiedot(Massa);
    return true;
}

bool CElain::AsetaTiedot(char Nimi[])
{
    printf("AsetaTiedot(char[])\n");
    strcpy(m_Nimi, Nimi);
    return true;
}

bool CElain::AsetaTiedot(float Massa)
{
    printf("AsetaTiedot(float)\n");
    m_Massa = Massa;
    return true;
}
{code}

main:

{
Code Block
}
int main()
{
    CElain kissa;

    kissa.AsetaTiedot("Miuku", 2.4);   // kutsuu metodia AsetaTiedot(char Nimi[], float Massa)
    kissa.AsetaTiedot("Mauku");        // kutsuu metodia AsetaTiedot(char Nimi[])
    kissa.AsetaTiedot(2.4);            // kutsuu metodia AsetaTiedot(float Massa)
}
{code}