सी ++ में ऑपरेटर ओवरलोडिंग कैसे लागू करें?



इस लेख में हम एक अन्य ऑब्जेक्ट ओरिएंटेड कॉन्सेप्ट को देखेंगे जो ऑपरेटर को आसान बनाता है। हम C ++ में ऑपरेटर ओवरलोडिंग सीख रहे होंगे।

इस लेख में हम अभी तक एक और वस्तु उन्मुख अवधारणा का पता लगाएंगे जो ऑपरेटर को संभालना आसान बनाता है। यही कारण है कि हम ऑपरेटर के विवरण में हो रहे हैं C ++ में ओवरलोडिंग । इस लेख में निम्नलिखित बिंदुओं को शामिल किया जाएगा,

तो, चलिए इस लेख को C ++ में ऑपरेटर ओवरलोडिंग पर शुरू करते हैं।





C ++ में ओवरलोडिंग

यदि हम एक ही नाम वाले एक ही वर्ग के दो या दो से अधिक सदस्य बनाते हैं, लेकिन संख्या या प्रकार के पैरामीटर में भिन्न होते हैं, तो इसे C ++ लोडिंग कहा जाता है।



C ++ में, हम ओवरलोड कर सकते हैं:

  • विधियाँ
  • निर्माता
  • अनुक्रमित गुण

ऐसा इसलिए है क्योंकि इन सदस्यों के पास केवल पैरामीटर हैं।

सी ++ में ऑपरेटर ओवरलोडिंग पर इस लेख के साथ आगे बढ़ना।



C ++ में ओवरलोडिंग के प्रकार

  • कार्य अतिभार
  • ऑपरेटर ओवरलोडिंग

ओवरलोडिंग - संचालक ओवरलोडिंग C ++ - Edureka में

सी ++ में ऑपरेटर ओवरलोडिंग पर इस लेख के साथ आगे बढ़ना।

जावा एल्गोरिदम और डेटा संरचनाएं

ऑपरेटर ओवरलोडिंग का उपयोग क्यों किया जाता है?

सी ++ कार्यक्रमों को ऑपरेटर ओवरलोडिंग के ज्ञान के बिना लिखा जा सकता है। फिर भी, प्रोग्रामर को सहज बनाने के लिए ऑपरेटर ऑपरेटिंग प्रोग्रामर्स द्वारा गहराई से उपयोग किया जाता है। उदाहरण के लिए,

हम कोड को इस तरह बदल सकते हैं:

गणना = जोड़ना (विभाजित करना (ए, बी), गुणा (ए, बी))

समीकरण के लिए

गणना = (ए / बी) + (एक * बी)

ऑपरेटर ओवरलोडिंग C ++ में अधिकांश ऑपरेटरों के लिए नई परिभाषाओं के विकास के लिए एक सरल और आसान तरीका प्रदान करता है। पर्याप्त ज्ञान के साथ, हम फ़ंक्शन और ऑपरेटर ओवरलोडिंग तकनीकों के रचनात्मक उपयोग द्वारा अपनी खुद की एक नई भाषा लगभग बना सकते हैं। हम निम्नलिखित को छोड़कर C ++ में सभी ऑपरेटरों को अधिभारित कर सकते हैं:
● स्कोप ऑपरेटर (: :)
● आकार ऑपरेटर (Sizeof)
● सदस्य चयनकर्ता ()
● सदस्य सूचक चयनकर्ता (*)
● टर्नरी ऑपरेटर (?)

ऑपरेटर ओवरलोडिंग का सिंटैक्स

sql सर्वर उदाहरण में प्रतिस्थापित
return_type class_name:: ऑपरेटर सेशन (तर्क_सूची) {// फ़ंक्शन बॉडी}

जहां रिटर्न प्रकार फ़ंक्शन द्वारा लौटाए गए मान का प्रकार है। class_name क्लास का नाम है।

सी ++ में ऑपरेटर ओवरलोडिंग पर इस लेख के साथ आगे बढ़ना।

C ++ में ऑपरेटर ओवरलोडिंग को लागू करना

ओवरलोड होने के लिए ऑपरेटर फ़ंक्शन या तो गैर-स्थिर (सदस्य फ़ंक्शन) या मित्र फ़ंक्शन होना चाहिए। ऑपरेटर ओवरलोडिंग फ़ंक्शन को सदस्य फ़ंक्शन पर लागू किया जा सकता है यदि बाएं ऑपरेटर उस वर्ग का ऑब्जेक्ट है, लेकिन यदि बाएं ऑपरेंड अलग है, तो ऑपरेटर ओवरलोडिंग फ़ंक्शन को गैर-सदस्य फ़ंक्शन के रूप में परिभाषित किया जाना चाहिए।
ऑपरेटर ओवरलोडिंग फ़ंक्शन को फ्रेंड फंक्शन बनाया जा सकता है, अगर उसे क्लास के निजी और संरक्षित सदस्यों तक पहुंच की आवश्यकता होती है। उदाहरण के लिए, ऑपरेटर ऑप एक ऑपरेटर फ़ंक्शन है जहां ऑप ऑपरेटर को ओवरलोड किया जा रहा है, और ऑपरेटर कीवर्ड है। ऑपरेटर ओवरलोडिंग एक फ़ंक्शन को लागू करके प्राप्त किया जा सकता है जो सदस्य फ़ंक्शन, गैर-सदस्य फ़ंक्शन या मित्र फ़ंक्शन हो सकता है।

ऑपरेटर कार्यों और सामान्य कार्यों के बीच अंतर क्या है?

ऑपरेटर के कार्य सामान्य कार्यों की तरह ही होते हैं। एकमात्र अंतर यह है कि ऑपरेटर फ़ंक्शन का नाम हमेशा ऑपरेटर कीवर्ड होता है जिसके बाद ऑपरेटर का प्रतीक होता है और ऑपरेटर कार्यों को तब कहा जाता है जब संबंधित ऑपरेटर का उपयोग किया जाता है।

सी ++ में ऑपरेटर ओवरलोडिंग पर इस लेख के साथ आगे बढ़ना।

ओवरलोडिंग दृष्टिकोण के प्रकार

ऑपरेटर ओवरलोडिंग तीन दृष्टिकोणों का उपयोग करके किया जा सकता है, वे हैं

  • एकतरफा ऑपरेटर को ओवरलोड करना।
  • ओवरलोडिंग बाइनरी ऑपरेटर।
  • एक दोस्त फ़ंक्शन का उपयोग करके बाइनरी ऑपरेटर को ओवरलोड करना।

सी ++ में ऑपरेटर ओवरलोडिंग पर इस लेख के साथ आगे बढ़ना।

ओवरलोडिंग यूनरी ऑपरेटर

आइए हम एकीकृत ‘-‘ ऑपरेटर पर विचार करें। एक माइनस ऑपरेटर जब एक यूरीरी के रूप में उपयोग किया जाता है तो उसे केवल एक ऑपरेंड की आवश्यकता होती है। हम जानते हैं कि यह ऑपरेटर बुनियादी डेटा चर पर लागू होने पर एक ऑपरेंड के संकेत को बदल देता है। आइए देखें कि इस ऑपरेटर को कैसे अधिभारित किया जाए ताकि इसे किसी वस्तु पर उसी तरह से लागू किया जा सके जिस तरह इसे इंट या फ्लोट चर पर लागू किया जाता है। जब एक वस्तु पर लागू किया जाता है, तो एक शून्य से कम, इसके प्रत्येक डेटा आइटम को घटा देना चाहिए।

उदाहरण:

# नाम स्थान std वर्ग ऊँचाई {सार्वजनिक: // सदस्य ऑब्जेक्ट int, इंच // का उपयोग करके अलग करें / वस्तु के मूल्य ऊँचाई (int f, int i) {पैर = f इंच = i} // ओवरलोडिंग (-) ऑपरेटर को प्रारंभ करने के लिए निर्माता प्रदर्शन घटाना // ऊंचाई वस्तु शून्य ऑपरेटर का संचालन- () {फीट-- इंच-- कटआउट<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

आउटपुट:

def __init __ (स्व) अजगर

स्पष्टीकरण:
उपरोक्त उदाहरण में, हम ऊँचाई वर्ग के दो चर में वृद्धि करने के लिए perform - 'एक्री संचालक को अधिभारित करते हैं। हम कंस्ट्रक्टर को दो पैरामीटर पास करते हैं और उनके मानों को पैरों और इंच चर में सहेजते हैं। फिर हम ऑपरेटर ओवरलोडिंग फ़ंक्शन (शून्य ऑपरेटर-) को परिभाषित करते हैं
) जिसमें दो चर एक स्थिति से घटते हैं।
जब हम लिखते हैं -h1 यह ऑपरेटर को ओवरलोडिंग फ़ंक्शन को कॉल करता है और कंस्ट्रक्टर को दिए गए मानों को घटाता है।

सी ++ में ऑपरेटर ओवरलोडिंग पर इस लेख के साथ आगे बढ़ना।

ओवरलोडिंग बाइनरी ऑपरेटर

यह एक ऑपरेटर का ओवरलोडिंग है जो दो ऑपरेंड पर काम कर रहा है। कक्षा की ऊँचाई का एक ही उदाहरण लेते हैं, लेकिन इस बार, दो ऊँचाई h1 और h2 ऑब्जेक्ट जोड़ें।

उदाहरण:

# नाम का उपयोग करके नाम श्रेणी std वर्ग ऊँचाई {सार्वजनिक: int पैर, इंच ऊँचाई () {पैर = 0 इंच = 0} ऊँचाई (int f, int i) {पैर = f इंच = i} // अधिभार (+) ऑपरेटर प्रदर्शन करने के लिए बाइनरी ऑपरेटर हाइट ऑपरेटर + (हाइट एंड डी 2) का उपयोग करके // दो डिस्टेंस ऑब्जेक्ट के अलावा // संदर्भ द्वारा कॉल करें {// ऊंचाई एच 3 वापस करने के लिए एक ऑब्जेक्ट बनाएं // पैरों और इंच h3.feet = फीट + d2.feet h3 के अलावा प्रदर्शन करें। इंच = इंच + d2.inch // परिणामी वस्तु वापसी h3}} int main () {Height h1 (3, 7) Height h2 (6, 1) Height h3 // अतिभारित ऑपरेटर h3 = h1 / h2 cout का उपयोग करें<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

आउटपुट:

स्पष्टीकरण:
ऊँचाई ऑपरेटर + (ऊँचाई और h2), यहाँ function_type का प्रकार वर्ग ऊँचाई है इस प्रकार यह वर्ग ऊँचाई का एक वस्तु h3 लौटाता है। लाइन h3 = h1 + h2 में, h1 अपनी कक्षाओं ऑब्जेक्ट्स के ऑपरेटर फ़ंक्शन को कॉल करता है और पैरामीटर के रूप में h2 लेता है, फिर हम h3.feet = feet + d2.feet और h3.inch = inch + d2chch को स्टोर करते हैं जो स्टोर करता है एच 3 ऑब्जेक्ट से जुड़े वेरिएबल्स में वेरिएबल्स फीट और इंच के मूल्यों का योग।
जब कथन the h3 = h1 + h2 'ऑपरेटर को ओवरलोड फ़ंक्शन को आमंत्रित करता है, तो ऑब्जेक्ट h1 ने फ़ंक्शन को लागू करने की ज़िम्मेदारी ली और h2 फ़ंक्शन को पारित होने वाले तर्क की भूमिका निभाता है। उपरोक्त आह्वान कथन h3 = h1.operator + (h2) के बराबर है इसलिए h2 के डेटा सदस्य को सीधे एक्सेस किया जाता है और h2 (जो कि एक तर्क के रूप में पारित हो जाता है) का डेटा सदस्य डॉट ऑपरेटर का उपयोग करके एक्सेस किया जाता है।

ऑपरेटर ओवरलोडिंग के लिए नियम

  • केवल मौजूदा ऑपरेटरों को ओवरलोड किया जा सकता है और नए ऑपरेटरों को ओवरलोड नहीं किया जा सकता है
  • अतिभारित ऑपरेटर में उपयोगकर्ता-परिभाषित डेटा प्रकार का कम से कम एक ऑपरेंड होना चाहिए।
  • हम कुछ ऑपरेटर्स को ओवरलोड करने के लिए किसी फ्रेंड फंक्शन का उपयोग नहीं करते हैं। हालांकि, सदस्य कार्यों का उपयोग उन ऑपरेटरों को अधिभारित करने के लिए किया जा सकता है।
  • जब एक सदस्य फ़ंक्शन के माध्यम से अपरिपक्व ऑपरेटरों को अधिभारित किया जाता है, तो वे कोई स्पष्ट तर्क नहीं लेते हैं, लेकिन, यदि वे एक मित्र फ़ंक्शन द्वारा अतिभारित होते हैं, तो वे एक तर्क लेते हैं।
  • जब बाइनरी ऑपरेटरों को एक सदस्य फ़ंक्शन के माध्यम से ओवरलोड किया जाता है, तो वे एक स्पष्ट तर्क लेते हैं, और यदि वे एक मित्र फ़ंक्शन के माध्यम से ओवरलोड होते हैं, तो वे दो स्पष्ट तर्क लेते हैं।

इस प्रकार हम 'सी ++ में ऑपरेटर ओवरलोडिंग' पर इस लेख के अंत में आए हैं। यदि आप अधिक सीखना चाहते हैं, तो एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा जावा प्रशिक्षण की जाँच करें। एडुर्का की पाठ्यक्रम आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं के लिए प्रशिक्षित करने के लिए डिज़ाइन किया गया है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस ब्लॉग के टिप्पणी अनुभाग में इसका उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।