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

Compare with Current View Page History

Version 1 Next »

Ylikuormitus

C++ tarjoaa ohjelmoijalle mahdollisuuden ylikuormittaa funktioita (ja metodeita). Tällä tarkoitetaan sitä, että voi olla samannimisiä funktioita, jotka eroavat parametrien lukumäärässä. Kutsuttava funktio/metodi tunnistetaan parametrien tyypistä. HUOM! palautustyyppiä ei voi ylikuormittaa. Muodostimien kanssa käytetään usein ylikuormitusta.

Esimerkki 3. Metodin ylikuormitus.

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  metodi
    bool AsetaTiedot(float Massa); // 2. ylikirjoitettu  metodi
};

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

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.