You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

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.

Palautustyyppiä ei voi ylikuormittaa.


Esimerkki 1. Funktioiden ylikuormitus.

.h:

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
};

.cpp:

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;
}

main:

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)
}
  • No labels
You must log in to comment.