Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.


Esimerkki 1. Funktioiden ylikuormitus.

.h:

Code Block
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:

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

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