हेल्लो दोस्तों आज के इस पोस्ट में आपको C++ virtual function in hindi के बारे में बताया गया है की इसे कैसे प्रयोग करते है तो चलिए शुरू करते है
Contents
c++ virtual functions का परिचय
- c++ आपको polymorphism की capability को प्रोविडे करती है polymorphism का मतलब एक interface से कई तरह के अलग अलग कोड्स को execute करना होता है जैसा की function overloading और constructor overloading में आप करते है
- function overloading में आप एक ही नाम के function को अलग अलग data type के साथ ही create करते है इसके बाद आप function को कॉल करवाते समय user जिस तरह के data type pass करते है
- और उसके अनुसार function की appropriate definition को execute हो जाती है इसे run-time polymorphism कहा जाता है क्योकि इसमे run time पर decide किया जाता है की function की कौन सी definition को execute होगी
- उसी प्रकार pointers के माध्यम से भी aap polymorphism achieve कर सकते है सिर्फ base class के pointer से ही आप दोनों क्लासेज के functions को execute करवा सकते है ऐया virtual functions के माध्यम से किया जाता है
- virtual functions के बारे में और अधिक जानने से पहले आपको ये जानने की जरूरत है की आप virtual functions की जरुरत क्यों पड़ी इसे निचे एक example के माध्यम से समझाया जा रहा है
example के लिए मान लीजिये की आपने एक class को create की है जिसका नाम color है इस class में आपने display() नाम से एक function को भी create किया हुए है
class color { public: void display() { cout<<”red green blue”; } };
color class को एक दूसरी class से inherit करती है जिसका नाम RedColor है इस class में भी एक display() नाम को function में create किया गया है
class RedColor: public color { public: void display() { cout<<”Red”; } };
मान लीजिये की आप mian() function में base class का एक pointer को create करते है सबसे पहले आप इस pointer को base object को असाइन करते है और फिर pointer के माध्यम से base class का display() function call करते है जब आप ऐसा करते है तो display() function “Red Green Blue” प्रिंट करता है
int main() { color *basepntr; //base class pointer color baseobj; //base class object RedColor derivedObj //derived class object Basepntr=&baseobj; //assigning base class obj to base class pointer Basepntr->display(); //executing base class display() function Basepntr=&derivedObj; //assigning derived class obj to base class pointer Basepntr->display(); //will still execute base class display() function Return 0; }
इसके बाद आप derived class का object को create करते है और इसे base class के pointer को assign करते है अब aap वापस base class के pointer के द्वारा display() function को call करते है जब आप ऐसा करते है तो वापस base class का ही display() function को execute होता है और “Red Green Blue” output शो होता है
लेकिन क्योकि यहाँ पर derived class का object pointer को assign किया गया है तो derived class का display() function को execute होना चाहिए पर ऐसा नहीं होता है इसका main कारण ये है की pointer उसी type के functions को execute कर रहा है जिस type का वह खुद है
यानी की उपर दिए गए example में base class का pointer को create किया गया है तो इसलिए वह pointer सिर्फ base क्लास् के function को ही execute कर रहा है ऐसी situation में c++ polymorphism के feature work नहीं कर रहा है
इस situation में polymorphism achieve करने एक लिए c++ आपको एक mechanism को प्रोविडे करती है जिसे virtual function कहते है virtual functions को virtual keywords से create किया जाता है virtual functions सिर्फ base class में ही create किया जाते है virtual functions compiler को बताते है की same नाम का function derived class में भी create किया गया है इसलिए यदि object derived class का है तो function भी derived class का ही execute किया जायेगा
rules for creating c++ virtual functions
virtual function को create और प्रयोग करने के कुछ नियम होते है जिन्हें follow करना बहुत जरुरी है तो आएये इनके बारे में आपको जानने का प्रयास करते है
- virtual function static नहीं हो सकती है
- virtual functions को object pointer के द्वारा ही एक्सेस किया जाता है
- virtual functions को base class में define किया जाना चाहिए चाहे फिर उन्हें बाद में प्रयोग किया जाये या नहीं
- virtual function किसी भी दूसरी class के friend function भी हो सकती है
- virtual function का declaration और derived class में same नाम के function का declaration same होना चाहिए यदि data types भी different है तो virtual function mechanism work नहीं करेगा
- हलाकि base class के pointer से किसी भी derived class के point किया जा सकता है लेकिन derived class के pointer से base class को point नहीं किया जा सकता है
- base class में define किये गए virtual function को derived class में दुबारा define करने की आवश्यकता नहीं होती है यदि ऐसा किया जाता है तो base class का function ही execute होगा
अब तक आप virtual functions को create करने के नियम पढ़ चुके है तो आएये अब देखते है की aap किस प्रकार virtual functions को create कर सकते है
creating & using c++ virtual functions
virtual functions define करने के लिए aap virtual keyword का प्रयोग करते है जिसका general syntax आपको निचे दिया जा रहा है
virtual data-type function-name(parameters-list) { //definition to virtual function }
example
पहले उपर create किये गए program को वापस virtual function का प्रयोग करते हुए निचे create किया गया है
#include<iostream> Using namespace std; Class color { Pubic: Virtual void display() { Cout<<”base:red green blue” <<endl; } }; Class RedColor:public color { Public: Void display() { Cout<<”Dervied :Red”; } } Int main() { Color baseobj; RedColor derivedobj; Color *basepntr; Basepntr=&baseobj; Basepntr->display(); //base class display() function will be executed Basepntr=&derivedobj Basepntr->display(); //derived class Display() function will be executed Return 0; }
जैसा की aap देख सकते है की base class में display() function को virtual keyword के साथ define किया गया है इस program को जब आप execute करेगे तो ये base class और derived class दोनों के ही display() function को result शो करेगा ये program निचे दिया गया आउटपुट को generate करता है
Base:Red Green Blue Derived :Red
Pure virtual function
जब आप base class में virtual function को create करते है और derived class में भी same ही function को create करते है तो आप base class के function को बहुत कम प्रयोग करते है या फिर करते ही नहीं है ऐसी situation में आपको base class के virtual function की definition को प्रोविडे करते की कोई आवश्यकता नहीं होती है
इस situation में aap एक ऐसे virtual function को create करते है जो की कुछ भी नहीं करता है इस तरह के function को pure virtual function कहा जाता है
pure virtual function को create करने के लिए आप normal virtual के declaration के बाद definition की बजाय assignment operator(=) लगाकर कर उसे 0 assign कर देता है जिसक syntax आपको निचे दिया जा रहा है
virtual data-type function-name(parameter-list)=0;
example के लिएय उपर दिए program के लिएय pure virtual function इस प्रकार को create किया जायेगा
virtual void display()=0;
C++ virtual function in hindi
reference- https://www.geeksforgeeks.org/virtual-function-cpp/
निवेदन:-आप सभी छात्र –छात्रों से निवेदन है की अगर आपको ये Topic(C++ virtual function in hindi) अच्छा लगा हो तो कृपया आप इस वेबसाइट के बारे में अपने दोस्तों को जरुर बताये अगर कोई topic(C++ virtual function in hindi) से संबधित प्रश्न हो तो कमेंट्स(comments) आपके लिए ही बना है और किसी Subject(C++ virtual function in hindi) के लेकर भी कोई प्रश्न हो तो कमेंट करे