polymorphism c
उदाहरणों के साथ C ++ में बहुरूपता की भूमिका।
बहुरूपता वस्तु-उन्मुख प्रोग्रामिंग के चार स्तंभों में से एक है। बहुरूपता का अर्थ है कई रूपों का होना। इसे उस तकनीक के रूप में परिभाषित किया जा सकता है जिसके द्वारा वस्तु स्थिति के आधार पर कई रूप ले सकती है।
प्रोग्रामिंग शब्दों में, हम कह सकते हैं कि एक वस्तु अलग-अलग स्थितियों में अलग-अलग व्यवहार कर सकती है।
इस ट्यूटोरियल में, हम बहुरूपता के प्रकार, बहुरूपता को लागू करने के तरीकों के साथ-साथ बहुरूपता की विभिन्न अन्य अवधारणाओं के बारे में विस्तार से जानेंगे।
=> C ++ प्रशिक्षण ट्यूटोरियल के ए-जेड को देखने के लिए यहां देखें।
उदाहरण के लिए, एक महिला विभिन्न स्थितियों में कई भूमिकाएँ निभा सकती है। एक बच्चे के लिए, वह एक माँ, घर पर एक गृहिणी, कार्यालय में एक कार्यकर्ता आदि है, इसलिए एक महिला विभिन्न भूमिकाओं को मानती है और विभिन्न परिस्थितियों में अलग-अलग व्यवहार का प्रदर्शन करती है। यह बहुरूपता का एक वास्तविक जीवन उदाहरण है।
इसी तरह प्रोग्रामिंग की दुनिया में भी, हमारे पास एक ऑपरेटर '+' हो सकता है जो बाइनरी एडिशन ऑपरेटर होता है जो ऑपरेंड बदलने पर अलग तरीके से व्यवहार करता है। उदाहरण के लिए, जब दोनों ऑपरेंड संख्यात्मक होते हैं, तो यह अतिरिक्त करता है।
दूसरी ओर, जब ऑपरेंड्स स्ट्रिंग होते हैं, तो यह कॉन्टैक्शन ऑपरेटर के रूप में कार्य करता है। इस प्रकार, बहुरूपता, संक्षेप में, का अर्थ है एक इकाई जो कई रूप लेती है या विभिन्न परिस्थितियों में अलग-अलग व्यवहार करती है।
आप क्या सीखेंगे:
- बहुरूपता के प्रकार
- संकलन समय बहुरूपता बनाम। रन-टाइम बहुरूपता
- संकलन समय बहुरूपता
- ओवरलोडिंग
- ऑपरेटर ओवरलोडिंग
- निष्कर्ष
- अनुशंसित पाठ
बहुरूपता के प्रकार
बहुरूपता को दो प्रकारों में विभाजित किया गया है।
- संकलन समय बहुरूपता
- रनटाइम बहुरूपता
इसका प्रतिनिधित्व करने के लिए आरेख नीचे दिखाया गया है:
डेटा माइनिंग में निर्णय ट्री उदाहरण
जैसा कि ऊपर चित्र में दिखाया गया है, बहुरूपता को संकलन-समय बहुरूपता और क्रमिक बहुरूपता में विभाजित किया गया है। संकलित समय बहुरूपता आगे ऑपरेटर ओवरलोडिंग और फ़ंक्शन ओवरलोडिंग में विभाजित है। वर्चुअल कार्यों का उपयोग करते हुए रनटाइम पॉलीमॉर्फिज्म को और कार्यान्वित किया जाता है।
संकलित समय बहुरूपता को प्रारंभिक बंधन या स्थैतिक बहुरूपता के रूप में भी जाना जाता है। इस प्रकार के बहुरूपता में, संकलन के समय ऑब्जेक्ट का तरीका लागू होता है। रनटाइम पोलिमोर्फ़िज्म के मामले में, ऑब्जेक्ट की विधि को रन टाइम पर लागू किया जाता है।
रनटाइम पॉलीमॉर्फिज्म को डायनामिक या लेट बाइंडिंग या डायनामिक पॉलीमोर्फिज्म के रूप में भी जाना जाता है। हम अपने निम्नलिखित विषयों में इनमें से प्रत्येक तकनीक के विस्तृत कार्यान्वयन पर ध्यान देंगे।
संकलन समय बहुरूपता बनाम। रन-टाइम बहुरूपता
हमें संकलन समय और रनटाइम बहुरूपता के बीच मुख्य अंतर को देखते हैं।
संकलन समय बहुरूपता | रनटाइम बहुरूपता |
---|---|
स्थैतिक बहुरूपता या प्रारंभिक बंधन के रूप में भी जाना जाता है | इसे गतिशील बहुरूपता या देर से / गतिशील बंधन के रूप में भी जाना जाता है |
संकलित समय पर ऑब्जेक्ट विधि लागू की जाती है | ऑब्जेक्ट का तरीका रन टाइम पर लागू होता है |
आमतौर पर ऑपरेटर ओवरलोडिंग और फ़ंक्शन ओवरलोडिंग का उपयोग करके कार्यान्वित किया जाता है | वर्चुअल फ़ंक्शंस और ओवरराइडिंग विधि का उपयोग करके कार्यान्वित किया गया |
मेथड ओवरलोडिंग एक संकलित समय बहुरूपता है जिसमें एक से अधिक विधि का एक ही नाम हो सकता है लेकिन विभिन्न पैरामीटर सूची और प्रकार। | मेथड ओवरराइडिंग रनटाइम पॉलीमॉर्फिज्म है जहां एक से अधिक विधि का समान प्रोटोटाइप के साथ एक ही नाम है |
चूंकि तरीकों को संकलन समय पर जाना जाता है, इसलिए निष्पादन तेजी से होता है | रनटाइम पर विधि ज्ञात होने के कारण निष्पादन धीमा है |
समाधान को लागू करने के लिए कम लचीलापन प्रदान करें क्योंकि संकलन के समय सब कुछ ज्ञात होना चाहिए | जटिल समाधानों को लागू करने के लिए और अधिक लचीला क्योंकि विधियों को रनटाइम पर तय किया जाता है |
संकलन समय बहुरूपता
संकलन समय बहुरूपता एक तकनीक है जिसमें किसी वस्तु की विधि को संकलन समय पर लागू किया जाता है।
इस प्रकार का बहुरूपता दो तरह से लागू होता है।
- कार्य अतिभार
- ऑपरेटर ओवरलोडिंग
हम प्रत्येक तकनीक पर विस्तार से चर्चा करेंगे।
ओवरलोडिंग
किसी फ़ंक्शन को तब ओवरलोड कहा जाता है जब हमारे पास एक ही फ़ंक्शन एक ही नाम के साथ लेकिन अलग-अलग पैरामीटर प्रकार या अलग-अलग तर्क होते हैं।
इस प्रकार एक फ़ंक्शन को पैरामीटर प्रकार, मापदंडों के क्रम और मापदंडों की संख्या के आधार पर ओवरलोड किया जा सकता है।
ध्यान दें कि एक ही नाम और एक ही पैरामीटर सूची वाले दो फ़ंक्शन लेकिन विभिन्न रिटर्न प्रकार एक अतिभारित फ़ंक्शन नहीं है और परिणामस्वरूप प्रोग्राम में उपयोग किए जाने पर एक संकलन त्रुटि होगी।
इसी तरह, जब फ़ंक्शन पैरामीटर केवल पॉइंटर में भिन्न होते हैं और यदि सरणी प्रकार समतुल्य है, तो इसका उपयोग ओवरलोडिंग के लिए नहीं किया जाना चाहिए।
अन्य प्रकार जैसे स्थिर और गैर-स्थिर, स्थिर और अस्थिर, आदि या पैरामीटर घोषणाएं जो डिफ़ॉल्ट मानों की उपस्थिति या अनुपस्थिति में भिन्न होती हैं, ओवरलोडिंग के लिए भी उपयोग नहीं की जाती हैं क्योंकि वे कार्यान्वयन के दृष्टिकोण से बराबर हैं।
उदाहरण के लिए,निम्नलिखित फ़ंक्शन प्रोटोटाइप ओवरलोड फ़ंक्शन हैं।
Add(int,int); Add(int,float); Add(float,int); Add(int,int,int);
उपरोक्त प्रोटोटाइप में, हम देखते हैं कि हम फ़ंक्शन को अधिभारित करते हैं मापदंडों के प्रकार, अनुक्रम या आदेश के प्रकार, मापदंडों की संख्या, आदि के आधार पर जोड़ें।
आइए हम फ़ंक्शन ओवरलोडिंग को बेहतर ढंग से समझने के लिए एक संपूर्ण प्रोग्रामिंग उदाहरण लेते हैं।
#include #include using namespace std; class Summation { public: int Add(int num1,int num2) { return num1+num2; } int Add(int num1,int num2, int num3) { return num1+num2+num3; } string Add(string s1,string s2){ return s1+s2; } }; int main(void) { Summation obj; cout< आउटपुट:
३५
191
१ ९
नमस्ते दुनिया
उपरोक्त कार्यक्रम में, हमारे पास एक सारांश वर्ग है जिसने Add नाम के तीन अतिभारित कार्यों को परिभाषित किया है जो दो पूर्णांक तर्क, तीन पूर्णांक तर्क और दो स्ट्रिंग तर्क लेता है।
मुख्य फ़ंक्शन में, हम चार फ़ंक्शन कॉल करते हैं जो विभिन्न पैरामीटर प्रदान करते हैं। पहले दो फ़ंक्शन कॉल सीधे हैं। Add में तीसरे फ़ंक्शन कॉल में, हम तर्क के रूप में दो फ़्लोटिंग पॉइंट मान प्रदान करते हैं।
इस मामले में, जो फ़ंक्शन मेल खाता है, वह आंतरिक रूप से एड (इंट, इंट) है, फ्लोट को डबल में बदल दिया जाता है और फिर इंट मापदंडों के साथ फ़ंक्शन से मिलान किया जाता है। यदि हमने फ्लोट के बजाय डबल निर्दिष्ट किया था, तो हमारे पास पैरामीटर के रूप में डबल के साथ एक और अतिभारित फ़ंक्शन होगा।
अंतिम फ़ंक्शन कॉल पैरामीटर के रूप में स्ट्रिंग मान का उपयोग करता है। इस स्थिति में, ऐड (+) ऑपरेटर एक कॉन्टेनेटेशन ऑपरेटर के रूप में कार्य करता है और एक स्ट्रिंग का निर्माण करने के लिए दो स्ट्रिंग मानों को मिलाता है।
फंक्शन ओवरलोडिंग के लाभ
फ़ंक्शन ओवरलोडिंग का मुख्य लाभ यह है कि यह कोड पुन: प्रयोज्य को बढ़ावा देता है। जब तक वे तर्क प्रकार, तर्क अनुक्रम और तर्कों की संख्या के आधार पर अतिभारित होते हैं, तब तक हमारे पास यथासंभव कई कार्य हो सकते हैं।
ऐसा करने से विभिन्न स्थितियों में एक ही ऑपरेशन के व्यवहार का प्रतिनिधित्व करने के लिए एक ही नाम के साथ अलग-अलग कार्य करना आसान हो जाता है।
यदि फ़ंक्शन ओवरलोडिंग मौजूद नहीं था, तो हमें अलग-अलग नामों के साथ कई अलग-अलग प्रकार के फ़ंक्शन लिखना होगा, इस प्रकार कोड को अपठनीय और अनुकूलन करना मुश्किल होगा।
ऑपरेटर ओवरलोडिंग
ऑपरेटर ओवरलोडिंग वह तकनीक है जिसका उपयोग करके हम C ++ में मौजूदा ऑपरेटरों को एक अलग अर्थ देते हैं। दूसरे शब्दों में, हम ऑपरेटरों को वस्तुओं के रूप में उपयोगकर्ता-परिभाषित डेटा प्रकारों को एक विशेष अर्थ देने के लिए अधिभारित करते हैं।
C ++ में अधिकांश ऑपरेटर ओवरलोडेड हैं या विशेष अर्थ दिए गए हैं ताकि वे उपयोगकर्ता द्वारा परिभाषित डेटा प्रकारों पर काम कर सकें। ध्यान दें कि ओवरलोडिंग के दौरान, ऑपरेटरों के मूल संचालन में बदलाव नहीं किया जाता है। ओवरलोडिंग बस ऑपरेटर को उनके मूल शब्दार्थ को ध्यान में रखकर एक अतिरिक्त अर्थ देता है।
हालांकि अधिकांश ऑपरेटरों को C ++ में ओवरलोड किया जा सकता है, लेकिन कुछ ऑपरेटर ऐसे हैं जिन्हें ओवरलोड नहीं किया जा सकता है।
इन ऑपरेटरों को नीचे दी गई तालिका में सूचीबद्ध किया गया है।
ऑपरेटर्स स्कोप रिज़ॉल्यूशन ऑपरेटर: (:) के आकार सदस्य चयनकर्ता (।) सदस्य सूचक चयनकर्ता (*) टेनेरी ऑपरेटर (:)
जिन कार्यों का हम ओवरलोड ऑपरेटरों को उपयोग करते हैं, उन्हें कहा जाता है ऑपरेटर के कार्य ”।
ऑपरेटर के कार्य सामान्य कार्यों के समान होते हैं लेकिन एक अंतर के साथ। अंतर यह है कि ऑपरेटर का नाम कीवर्ड से शुरू होता है ' ऑपरेटर “ऑपरेटर सिंबल के बाद जिसे ओवरलोड किया जाना है।
ऑपरेटर फ़ंक्शन तब कहा जाता है जब प्रोग्राम में संबंधित ऑपरेटर का उपयोग किया जाता है। ये ऑपरेटर कार्य सदस्य कार्य या वैश्विक तरीके या यहां तक कि एक मित्र कार्य भी हो सकते हैं।
ऑपरेटर फ़ंक्शन का सामान्य सिंटैक्स है:
return_type classname::operator op(parameter list) { //function body }
यहां 'ऑपरेटर ऑप' ऑपरेटर फ़ंक्शन है जहां ऑपरेटर कीवर्ड है और ओप ऑपरेटर को ओवरलोड किया जाना है। Return_type लौटाया जाने वाला मान प्रकार है।
हमें ऑपरेटर कार्यों का उपयोग करके ऑपरेटर को ओवरलोडिंग प्रदर्शित करने के लिए कुछ प्रोग्रामिंग उदाहरण देखें।
उदाहरण 1:सदस्य ऑपरेटर फ़ंक्शन का उपयोग करते हुए यूनिरी ऑपरेटर का ओवरलोडिंग।
#include using namespace std; class Distance { public: int feet; // Constructor to initialize the object's value Distance(int feet) { this->feet = feet; } //operator function to overload ++ operator to perform increment on Distance obj void operator++() { feet++; } void print(){ cout << '
Incremented Feet value: ' << feet; } }; int main() { Distance d1(9); // Use (++) unary operator ++d1; d1.print(); return 0; }
आउटपुट:
परिपत्र से जुड़ी सूची c ++
बढ़े हुए पैर का मूल्य: 10
यहां हमने संचालक ++ फ़ंक्शन का उपयोग करते हुए यूनिरी इंक्रीमेंट ऑपरेटर को अधिभारित किया है। मुख्य फ़ंक्शन में, हम इस ++ ऑपरेटर का उपयोग वर्ग दूरी के ऑब्जेक्ट को बढ़ाने के लिए करते हैं।
उदाहरण 2:सदस्य ऑपरेटर फ़ंक्शन का उपयोग करके बाइनरी ऑपरेटर का ओवरलोडिंग।
#include using namespace std; class Complex { int real, imag; public: Complex(int r = 0, int i =0) {real = r; imag = i;} //Operator function to overload binary + to add two complex numbers Complex operator + (Complex const &obj) { Complex c3; c3.real = real + obj.real; c3.imag = imag + obj.imag; return c3; } void print() { cout << real << ' + i' << imag << endl; } }; int main() { Complex c1(2, 5), c2(3, 7); cout<<'c1 = '; c1.print(); cout<<'c2 = '; c2.print(); cout<<'c3 = c1+c2 = '; Complex c3 = c1 + c2; // calls overloaded + operator c3.print(); }
आउटपुट:
c1 = 2 + i5
c2 = 3 + i7
c3 = c1 + c2 = 5 + i12
यहां हमने ऑपरेटर ओवरलोडिंग का उपयोग करके दो जटिल संख्याओं को जोड़ने के क्लासिक उदाहरण का उपयोग किया है। हम ओवरलोड + ऑपरेटर को जटिल संख्याओं और एक ऑपरेटर फ़ंक्शन का प्रतिनिधित्व करने के लिए एक वर्ग को परिभाषित करते हैं जिसमें हम जटिल संख्याओं के वास्तविक और काल्पनिक भागों को जोड़ते हैं।
मुख्य कार्य में, हम दो जटिल वस्तुओं की घोषणा करते हैं और वांछित परिणाम प्राप्त करने के लिए अतिभारित + ऑपरेटर का उपयोग करके उन्हें जोड़ते हैं।
नीचे दिए गए उदाहरण में, हम कार्यान्वयन में अंतर देखने के लिए दो जटिल संख्याओं को जोड़ने के लिए मित्र फ़ंक्शन का उपयोग करेंगे।
#include using namespace std; class Complex { int real, imag; public: Complex(int r = 0, int i =0) {real = r; imag = i;} //friend function to overload binary + to add two complex numbers friend Complex operator +(Complex const &, Complex const &); void print() { cout << real << ' + i' << imag << endl; } }; Complex operator + (Complex const &c1, Complex const &c2) { Complex c3; c3.real = c1.real + c2.real; c3.imag = c1.imag + c2.imag; return c3; } int main() { Complex c1(2, 5), c2(3, 7); cout<<'c1 = '; c1.print(); cout<<'c2 = '; c2.print(); cout<<'c3 = c1+c2 = '; Complex c3 = c1 + c2; // calls overloaded + operator c3.print(); }
आउटपुट:
c1 = 2 + i5
c2 = 3 + i7
c3 = c1 + c2 = 5 + i12
हम देखते हैं कि कार्यक्रम का आउटपुट समान है। कार्यान्वयन में एकमात्र अंतर पिछले कार्यान्वयन में सदस्य फ़ंक्शन के बजाय + ऑपरेटर को अधिभारित करने के लिए मित्र फ़ंक्शन का उपयोग है।
जब बाइनरी ऑपरेटर के लिए फ्रेंड फ़ंक्शन का उपयोग किया जाता है, तो हमें फ़ंक्शन के दोनों ऑपरेंड को स्पष्ट रूप से निर्दिष्ट करना होगा। इसी तरह, जब एकरी ऑपरेटर को फ्रेंड फंक्शन का उपयोग करके ओवरलोड किया जाता है, तो हमें फंक्शन के लिए सिंगल ऑपरेंड प्रदान करना होगा।
ऑपरेटर कार्यों के अलावा, हम एक भी लिख सकते हैं रूपांतरण ऑपरेटर इसका उपयोग एक प्रकार से दूसरे में बदलने के लिए किया जाता है। इन अतिभारित रूपांतरण ऑपरेटरों को कक्षा का सदस्य कार्य होना चाहिए।
उदाहरण 3:रूपांतरण ऑपरेटर का उपयोग कर ऑपरेटर ओवरलोडिंग।
#include using namespace std; class DecFraction { int numerator, denom; public: DecFraction(int num, int denm) { numerator = num; denom = denm; } // conversion operator: converts fraction to float value and returns it operator float() const { return float(numerator) / float(denom); } }; int main() { DecFraction df(3, 5); //object of class float res_val = df; //calls conversion operator cout << 'The resultant value of given fraction (3,5)= '< आउटपुट:
दिए गए अंश का परिणामी मान (3,5) = 0.6
इस कार्यक्रम में, हमने दिए गए अंश को फ्लोट मान में बदलने के लिए रूपांतरण ऑपरेटर का उपयोग किया है। रूपांतरण हो जाने के बाद, रूपांतरण ऑपरेटर कॉलर को परिणामी मान लौटाता है।
मुख्य फ़ंक्शन में, जब हम df ऑब्जेक्ट को res_val चर में असाइन करते हैं, तो रूपांतरण होता है और परिणाम res_val में संग्रहीत होता है।
हम एक एकल तर्क के साथ एक निर्माता भी कह सकते हैं। जब हम किसी एकल तर्क का उपयोग करके कक्षा से एक कंस्ट्रक्टर को बुला सकते हैं, तो इसे 'कहा जाता है' परिवर्तन निर्माता ”। निर्माण किए जा रहे वर्ग में अंतर्निहित रूपांतरण के लिए रूपांतरण निर्माता का उपयोग किया जा सकता है।
#include using namespace std; class Point { private: int x,y; public: Point(int i=0,int j=0) {x = i;y=j;} void print() { cout<<' x = '< आउटपुट:
सामान्य कंस्ट्रक्टर का उपयोग करके बिंदु का निर्माण
x = 20 y = 30
रूपांतरण कंस्ट्रक्टर का उपयोग करके बिंदु का निर्माण
x = 10 y = 0

यहां हमारे पास एक वर्ग बिंदु है जो एक निर्माता को डिफ़ॉल्ट मानों के साथ परिभाषित करता है। मुख्य फ़ंक्शन में, हम x और y निर्देशांक के साथ एक ऑब्जेक्ट pt का निर्माण करते हैं। इसके बाद, हम बस pt को 10 का मान देते हैं। यह वह जगह है जहाँ रूपांतरण निर्माता को बुलाया जाता है और x को 10 का मान दिया जाता है जबकि y को 0 का डिफ़ॉल्ट मान दिया जाता है।
ऑपरेटर ओवरलोडिंग नियम
ऑपरेटर को ओवरलोडिंग करते समय, हमें नीचे दिए गए नियमों को देखना होगा।
- C ++ में, हम केवल मौजूदा ऑपरेटरों को ओवरलोड करने में सक्षम हैं। नए जोड़े गए ऑपरेटरों को ओवरलोड नहीं किया जा सकता है।
- जब ऑपरेटरों को ओवरलोड किया जाता है, तो हमें यह सुनिश्चित करने की आवश्यकता है कि कम से कम एक ऑपरेंड उपयोगकर्ता-निर्धारित प्रकार का है।
- कुछ ऑपरेटरों को अधिभारित करने के लिए, हम मित्र फ़ंक्शन का भी उपयोग कर सकते हैं।
- जब हम सदस्य फ़ंक्शन का उपयोग करते हुए एकरी संचालकों को ओवरलोड करते हैं, तो यह कोई स्पष्ट तर्क नहीं देता है। यह एक स्पष्ट तर्क लेता है जब मित्र फ़ंक्शन का उपयोग करके अपर संचालक को अधिभारित किया जाता है।
- इसी तरह, जब बाइनरी ऑपरेटरों को सदस्य फ़ंक्शन का उपयोग करके ओवरलोड किया जाता है, तो हमें फ़ंक्शन को एक स्पष्ट तर्क प्रदान करना होगा। जब बाइनरी ऑपरेटर्स फ्रेंड फ़ंक्शन का उपयोग करके ओवरलोड होते हैं, तो फ़ंक्शन दो तर्क लेता है।
- C ++ में दो ऑपरेटर हैं जो पहले से ही ओवरलोड हैं। ये “=” और “&” हैं। इसलिए उसी वर्ग की किसी वस्तु को कॉपी करने के लिए, हमें = ऑपरेटर को ओवरलोड करने की आवश्यकता नहीं है, और हम इसे सीधे उपयोग कर सकते हैं।
ऑपरेटर ओवरलोडिंग के लाभ
C ++ में ऑपरेटर ओवरलोडिंग हमें ऑपरेटर की कार्यक्षमता को विस्तारित प्रकारों के अलावा वर्ग ऑब्जेक्ट सहित उपयोगकर्ता-परिभाषित प्रकारों तक विस्तारित करने की अनुमति देता है।
उपयोगकर्ता-परिभाषित प्रकारों के लिए ऑपरेटर की कार्यक्षमता का विस्तार करके, हमें उपयोगकर्ता-परिभाषित प्रकारों पर विभिन्न कार्यों को करने के लिए जटिल कोड लिखने की आवश्यकता नहीं है लेकिन, हम इसे एक-एक ऑपरेशन में बिल्ट-इन प्रकारों की तरह ही कर सकते हैं।
निष्कर्ष
कंपाइल टाइम पॉलिमोर्फ़िज्म मुख्य रूप से फ़ंक्शन ओवरलोडिंग और ऑपरेटर लोडिंग के संदर्भ में कोड की कार्यक्षमता का विस्तार करने के लिए ओवरलोडिंग की सुविधा प्रदान करता है।
फ़ंक्शन ओवरलोडिंग के माध्यम से, हम एक ही नाम के साथ एक से अधिक फ़ंक्शन लिख सकते हैं, लेकिन विभिन्न पैरामीटर और प्रकार। यह कोड को सरल और आसानी से पठनीय बनाता है। ऑपरेटर ओवरलोडिंग के द्वारा, हम ऑपरेटरों की कार्यक्षमता का विस्तार कर सकते हैं, ताकि हम उपयोगकर्ता द्वारा परिभाषित प्रकारों पर भी बुनियादी संचालन कर सकें।
हमारे आगामी ट्यूटोरियल में, हम C ++ में रनटाइम पॉलीमोर्फिज़्म के बारे में अधिक जानेंगे।
=> आसान सी ++ प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
अनुशंसित पाठ
- C ++ में रनटाइम पॉलिमोर्फिज्म
- मित्र कार्य C ++ में
- सी ++ में पुनरावृत्ति
- हाथों पर उदाहरण के साथ पायथन मेन फंक्शन ट्यूटोरियल
- C ++ का पूर्ण अवलोकन
- QTP ट्यूटोरियल # 21 - कैसे QTP टेस्ट को मॉड्यूलर और पुन: प्रयोज्य क्रियाओं और फ़ंक्शन पुस्तकालयों का उपयोग करें
- यूनिक्स पाइप्स ट्यूटोरियल: यूनिक्स प्रोग्रामिंग में पाइप्स
- पुस्तकालय कार्य C ++ में