...
Esimerkiksi, jos ajattelemme pegasusta, lentävää lentävää hevosta, joka omaa ominaisuuksia hevosesta ja linnusta. Helpoin tapa toteuttaa edellä kuvattu luokka on periyttää sen ominaisuudet kahdesta luokasta: hevonen ja lintu.
Esimerkki
...
1. Moniperiytyminen.
Code Block |
---|
class CHevonen |
...
{ public: void Aantele() |
...
{ printf("Iii-haa-haa!\n"); |
...
} }; |
...
class CLintu |
...
{ |
...
public: |
...
void Lenna() |
...
{ printf("Lintu lentää\n"); |
...
} }; |
...
class CPegasus |
...
: public CHevonen, public CLintu { }; int main() { CPegasus pegasus; pegasus.Aantele(); |
...
pegasus.Lenna(); } |
} //Nyt lentävä hevonen perii sekä hevosen että linnun piirteet. Yksi ongelma moniperiytymisessä tulee vastaan, jos molemmilla perittävillä luokilla on samanniminen metodi. Esimerkiksi Syo()-metodi.
Esimerkki
...
2. Moniperiytymisen ongelma.
Code Block |
---|
class CHevonen |
...
{ |
...
public: |
...
void Syo() { |
...
} }; |
...
class CLintu |
...
{ |
...
public: |
...
void Syo() |
...
class CPegasus :
public CHevonen,
public CLintu
{
};
int main()
{
CPegasus pegasus;
...
{ } }; class CPegasus : public CHevonen, public CLintu { }; int main() { CPegasus pegasus; pegasus.Syo(); |
...
} |
Yllä olevassa esimerkissä C++-kääntäjä ei tiedä kumpaa Syo()-funktiota tarkoitetaan ja se antaa virheilmoituksen.
...