Funktsiooni C ++ alistamine

C Function Overriding



Selles artiklis käsitleme funktsioonide alistamist C ++ programmeerimiskeeles. C ++ toetab käitusaegset polümorfismi.

Funktsioonide alistamisel määratleb alamklass funktsiooni, mis on juba määratletud tema vanemklassis.







See võimaldab programmeerijal pakkuda tuletatud klassipõhiseid funktsioone (kuigi see on määratletud põhiklassis).



Nüüd näeme mõningaid näiteid ja mõistame funktsiooni C ++ funktsiooni esmatähtsat kontseptsiooni.



Näide-1

Olen määratlenud allpool toodud näidiskoodis kaks klassi - põhiklassi ja tuletatud klassi. Põhiklassil on liigefunktsioon, st disp (). Tuletatud_klass päritakse Base_Classist. Funktsioon disp () on Base_Classis ja seejärel uuesti määratletud Derived_Classis.





Funktsioonis main () luuakse Derived_Class objekt, st d. Seejärel kutsume tuletatud klassi objekti funktsiooni disp (), nii et tuletatud klassi funktsiooni käivitatakse. Siin eiratakse põhiklassi versiooni. Allpool näete väljundi funktsiooni - disp () tuletatud klassis.

#kaasake

kasutades nimeruumi std;

// põhiklass
klass Base_Class
{
avalik:
tühinekasutada()
{
maksma<< 'disp () funktsioon põhiklassis.' <<endl;
}

};

// tuletatud klass
klass Derived_Class:avalik Base_Class
{
avalik:
tühinekasutada()
{
maksma<< 'disp () funktsioon tuletatud klassis' <<endl;
}
};

intpeamine()
{
Tuletatud_klass d;
d.kasutada(); // disp () funktsioon tuletatud klassi objektil
tagasi 0;
}



Näide-2

Selles näites näeme, kuidas tuletatud klassi objekti kaudu funktsiooni baasklassi versiooni tahtlikult kutsuda. Tuletatud klassi funktsiooni definitsioonis kasutame funktsiooni baasklassi versiooni kutsumiseks ulatuse eraldusvõime operaatorit [::].

#kaasake

kasutades nimeruumi std;

klass Base_Class
{
avalik:
tühinekasutada()
{
maksma<< 'disp () funktsioon põhiklassis.' <<endl;
}

};

klass Derived_Class:avalik Base_Class
{
avalik:
tühinekasutada()
{
Base_Class::kasutada(); // Helista disp () põhiklassi versioonile
}
};

intpeamine()
{
Tuletatud_klass d;
d.kasutada();
tagasi 0;
}

Näide-3

See on veel üks näide funktsioonide alistamisest. Selles näites oleme loonud vanemaklassi - loom ja kaks tuletatud klassi - part ja koer. Põhiklassil, st loomaklassil on liikmefunktsiooni heli ().

Tuletatud klassi/alamklassi, st koera, oleme määratlenud sama funktsiooni, st heli () uuesti, et alistada selle põhiklassi määratlus. Samamoodi oleme teises tuletatud klassis, st Duck, sama funktsiooni, st heli () uuesti määratlenud.

Põhifunktsioonis () oleme loonud koeraobjekti Koer ja pardi part. Niisiis, kui me kutsume koera ja pardi funktsiooni sound (), helistab funktsiooni () funktsiooni tuletatud klassiversioon. Näete programmi väljundit, nagu allpool näidatud. Niisiis, funktsiooni alistamise abil saame käivitada tuletatud klassispetsiifilise funktsiooni.

#kaasake

kasutades nimeruumi std;

klassi loom
{
avalik:
tühineheli()
{
maksma<< 'Loomade heli!' <<endl;
}

};

// Tuletatud klass - Koerte klass
klassi Koer:avalik Loom
{
avalik:
tühineheli()
{
maksma<< 'Koera hääl - haukumine.' <<endl;
}
};

// Tuletatud klass - Pardiklass
klassi part:avalik Loom
{
avalik:
tühineheli()
{
maksma<< 'Pardi heli - vutt.' <<endl;
}
};


intpeamine()
{
Koer koer;
Pardipart;

koer.heli(); // koera heli ()
part.heli(); // pardi heli ()

tagasi 0;
}

Järeldus

Selles artiklis selgitasin funktsiooni alistamist C ++ . C ++ keel toetab käitusaegset polümorfismi. Funktsioonide alistamine aitab saavutada C ++ tööaja polümorfismi. Selles artiklis vaadeldi funktsioonide alistamise kontseptsiooni ja seda, kuidas funktsiooni täitmise abil saavutada tööaja polümorfismi.