Ц ++

Ц ++ виртуелна функција

Ц ++ виртуелна функција
У овом чланку ћемо разговарати о виртуелној функцији у програмском језику Ц ++. Виртуелна функција се користи у Ц ++ за постизање рунтиме / динамичког полиморфизма. Видећемо неколико примера за разумевање концепта виртуелне функције у Ц++.

Виртуелна функција је функција члана која је дефинисана у основној класи / родитељској класи и редефинисана у изведеној класи. Виртуална функција омогућава позивање изведене верзије класе функције помоћу референце или показивача на основну класу.

Погледајмо неколико примера за разумевање концепта виртуелне функције.

У првом примеру видећемо понашање не-виртуелне функције, а затим у другом примеру објаснићемо понашање виртуелне функције.

Пример 1

У следећем примеру кода имамо две класе: основну класу и изведену класу.

Основна класа има функцију члана, тј.е., приказ(). Изведена класа је наслеђена од основне класе и редефинисала је функцију дисплаи ().

Затим смо прогласили показивач на тип основне класе и доделили објект изведене класе. Дакле, када позивамо функцију дисплаи () помоћу показивача типа основне класе, позваће се функција основне класе. Резултат можете видети испод.

Али, у таквим случајевима, Ц ++ пружа начин позивања изведене функције класе декларисањем функције основне класе као виртуелне. Видећемо још један пример да ово разумемо.

#инцлуде
коришћење простора имена стд;
цласс Басе_Цласс

јавно:
приказ празнине ()

цоут << "I am in Base class" << endl;

;
класа Деривед_Цласс: јавни Басе_Цласс

јавно:
приказ празнине ()

цоут << "I am in Derived class" ретурн 0;

Пример 2

У овом примеру смо дефинисали функцију дисплаи () као виртуелну функцију у основној класи. Једина разлика у односу на претходни програм је та што смо додали виртуелну кључну реч испред „воид дисплаи ()“ у основну класу.

Сада, ако видите излаз, исписује се „Ја сам у изведеној класи“, што указује да је изведена функција класе позвана.

Виртуелна кључна реч (виртуелна функција) у основној класи одговорна је да осигура да се за објект позове права функција.

#инцлуде
коришћење простора имена стд;
цласс Басе_Цласс

јавно:
приказ виртуалне празнине ()

цоут << "I am in Base class" << endl;

;
класа Деривед_Цласс: јавни Басе_Цласс

јавно:
приказ празнине ()

цоут << "I am in Derived class" ретурн 0;

Пример 3

Ово је још један пример виртуелне функције. Као што видите у доњем програму, дефинисали смо основну класу, тј.е., Животиња. Постоје две изведене класе: пас и крава. Дефинисали смо функцију еат () као виртуелну у основној класи, тј.е., Животиња. Затим смо редефинисали функцију еат () у обе изведене класе, пас и крава.  У функцији маин () имамо показивач основне класе, тј.е., Животиња, а затим је приложио изведену класу Пас. Дакле, када позивамо функцију еат () помоћу показивача основне класе, можемо позвати изведену класу функције еат () функције, и.е., функција еат () из класе Дог. Слично томе, када прикачимо објект класе Цов, тада можемо позвати изведену класу функције еат () функције, тј.е., функција еат () из класе Цов. Ово понашање можете јасно видети у доњем излазу. 

#инцлуде
коришћење простора имена стд;
разред Животиња

јавно:
виртуал воид јести ()

цоут << "Animal - base class - undefined eating behavior." << endl;

;
разред Пас: јавна Животиња

јавно:
воид еат ()

цоут << "Dog - eat non-veg!" << endl;

;
разред Крава: јавна Животиња

јавно:
воид еат ()

цоут << "Cow - eat veg!" а_птр = нова крава ();
а_птр-> еат ();
ретурн 0;

Закључак

У овом чланку сам објаснио концепт виртуелне функције у језику Ц++. Ц ++ подржава различите врсте полиморфизама - статички полиморфизам и динамички полиморфизам. Уз помоћ виртуелне функције можемо постићи време извођења / динамички полиморфизам. У овом чланку смо погледали само концепт виртуелне функције и како постићи полиморфизам времена извођења. Објаснио сам три радна примера како бих објаснио виртуелне функције.

Контролишите и управљајте кретањем миша између више монитора у оперативном систему Виндовс 10
Двоструки приказ миша омогућава вам контролу и конфигурисање кретања миша између више монитора, успоравајући његово кретање близу границе. Виндовс 10/...
ВинМоусе вам омогућава да прилагодите и побољшате кретање показивача миша на Виндовс рачунару
Ако желите да побољшате подразумеване функције показивача миша, користите бесплатни програм ВинМоусе. Додаје још функција које ће вам помоћи да на нај...
Леви тастер миша не ради у оперативном систему Виндовс 10
Ако уз преносни рачунар или стони рачунар користите наменски миш, али тастер миша не ради у оперативном систему Виндовс 10/8/7 из неких разлога, ево н...