Объектга йўналтирилган программалаш
Download 0.58 Mb.
|
С ОЙП
Виртуал функциялар
Чақириш интерфейси (прототипи) маълум, амалга оширилиши умумий кўринишда берилиши мумкин бўлмасдан, фақат конкрет ҳолатлардагини аниқланадиган функцияларга виртуал функциялар дейилади. Виртуал функция – бу чақирилиши учун қандай ифода ишлатилишидан қатъий назар объект учун тўғри (мос) функция чақирилишини кафолатлайдиган функциядир. Фараз қилайлик, таянч синфда функциянинг виртуал эълони, ҳосилавий синфда ҳам худди шу функция эълони бўлсин. У ҳолда ҳосилавий синф объектлари учун ҳосилавий синф функцияси чақирилади, агар улар чақирилишида таянч синфга кўрсаткич ёки мурожаат ишлатилган бўлса ҳам. class Tayanch { public: Tayanch(int _x) {x=_x;} virtual int Qiymat_X(){return x;} virtual void Chop_X(); private: int x; }; void Tayanch:: Chop_X() { cout<<"Tayanch::x="< } class Hosila_1: public Tayanch { public: Hosila_1(int _x): Tayanch(_x){} void Chop_X(); }; void Hosila_1:: Chop_X() { cout<<"Hosila_1::x="< } class Hosila_2: public Tayanch { public: Hosila_2(int _x): Tayanch(_x){} void Chop_X(); }; void Hosila_2:: Chop_X() { cout<<"Hosila_2::x="< } int main(int argc, char* argv[]) { Tayanch * tayanch=new Tayanch(10); Hosila_1 * hos1=new Hosila_1(20); Hosila_2 * hos2=new Hosila_2(30); tayanch->Chop_X(); tayanch=hos1; tayanch->Chop_X(); tayanch=hos2; tayanch->Chop_X(); while(1); return 0; } Ҳосилавий синфлардаги Chop_X() функциялари виртуал ҳисобланади, чунки у Tayanch таянч синфида виртуал деб эълон қилинган. Виртуал функцияларни чақириш учун қуйидаги кодлар ишлатилган: Download 0.58 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling