C++ Operaउदाहरणों से भरा पड़ा है

एचएमबी क्या है? Operaटोर ओवरलोडिंग?

का प्रयोग ऑपरेटर ओवरलोडिंग in C++, आप एक स्कोप में ऑपरेटर के लिए एक से अधिक अर्थ निर्दिष्ट कर सकते हैं। ऑपरेटर ओवरलोडिंग का उद्देश्य उपयोगकर्ता-परिभाषित डेटा प्रकार के लिए ऑपरेटर का एक विशेष अर्थ प्रदान करना है।

ऑपरेटर ओवरलोडिंग की सहायता से, आप अधिकांश को पुनः परिभाषित कर सकते हैं C++ ऑपरेटर। आप एक ऑपरेटर का उपयोग करके विभिन्न ऑपरेशन करने के लिए ऑपरेटर ओवरलोडिंग का भी उपयोग कर सकते हैं।

वाक्य - विन्यास

किसी को ओवरलोड करना C++ ऑपरेटर, आपको क्लास के अंदर एक विशेष फ़ंक्शन को निम्नानुसार परिभाषित करना चाहिए:

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

उपरोक्त वाक्यविन्यास का स्पष्टीकरण इस प्रकार है:

  • return_type फ़ंक्शन के लिए रिटर्न प्रकार है।
  • इसके बाद, आप ऑपरेटर कीवर्ड का उल्लेख करें।
  • यह प्रतीक उस ऑपरेटर प्रतीक को दर्शाता है जिसे ओवरलोड किया जाना है। उदाहरण के लिए, +, -, <, ++.
  • तर्क(तर्कों) को ऑपरेटर फ़ंक्शन में फ़ंक्शन की तरह ही पास किया जा सकता है।

उदाहरण 1

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

आउटपुट:

Operaटोर ओवरलोडिंग

कोड का स्क्रीनशॉट यहां दिया गया है:

Operaटोर ओवरलोडिंग

कोड स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल को शामिल करना।
  2. अपने प्रोग्राम में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
  3. TestClass नामक एक क्लास बनाएं.
  4. निजी पहुंच संशोधक का उपयोग करें, जो किसी वर्ग सदस्य को निजी रूप से पहुंच योग्य के रूप में चिह्नित करता है।
  5. एक पूर्णांक चर गिनती बनाएँ। यह चर निजी रूप से सुलभ होगा।
  6. सार्वजनिक पहुँच संशोधक का उपयोग करें, जो किसी वर्ग सदस्य को निजी रूप से पहुँच योग्य के रूप में चिह्नित करता है।
  7. वेरिएबल काउंटर को 5 पर आरंभ करने के लिए क्लास कन्स्ट्रक्टर का उपयोग करें।
  8. — ऑपरेटर का अर्थ ओवरलोड करें।
  9. ऑपरेटर चर x के मान को 1 से घटा देगा।
  10. ऑपरेटर ओवरलोडिंग अनुभाग का अंत। ऑपरेटर को नया नाम दिया गया है।
  11. Display() फ़ंक्शन नामक फ़ंक्शन को परिभाषित करना।
  12. जब Display() फ़ंक्शन को कॉल किया जाता है, तो कंसोल पर अन्य टेक्स्ट के साथ-साथ वेरिएबल काउंट का मान प्रिंट करें। } Display() फ़ंक्शन के बॉडी के अंत को चिह्नित करता है।
  13. कक्षा का अंत.
  14. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के भीतर जोड़ा जाना चाहिए।
  15. TestClass क्लास का एक उदाहरण बनाएं और इसे tc नाम दें।
  16. यह void ऑपरेटर –() फ़ंक्शन को कॉल करेगा।
  17. Display() फ़ंक्शन को कॉल करने के लिए TestClass क्लास के स्टांस का उपयोग करें।
  18. फ़ंक्शन को सफलतापूर्वक पूरा होने पर मान लौटाना होगा.
  19. फ़ंक्शन main() के मुख्य भाग का अंत.

विभिन्न दृष्टिकोण Operaटोर ओवरलोडिंग C++

आप निम्न में से किसी भी प्रकार के फ़ंक्शन को कार्यान्वित करके ऑपरेटर ओवरलोडिंग कर सकते हैं:

  1. सदस्य कार्य
  2. गैर-सदस्य कार्य
  3. मित्र फ़ंक्शन
  • ऑपरेटर ओवरलोडिंग फ़ंक्शन एक सदस्य फ़ंक्शन हो सकता है जब बायाँ ऑपरेंड क्लास का ऑब्जेक्ट हो।
  • जब बायाँ ऑपरेंड अलग होता है, तो Operaटोर ओवरलोडिंग फ़ंक्शन एक गैर-सदस्य फ़ंक्शन होना चाहिए।

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

सभी कर सकते हैं C++ Operaक्या टॉर्स ओवरलोडेड हो सकते हैं?

नहीं यहां पर C++ ऐसे ऑपरेटर जिन्हें ओवरलोड नहीं किया जा सकता।

वे शामिल हैं:

  • :: -स्कोप रिज़ॉल्यूशन ऑपरेटर
  • ?: -त्रिकोणीय ऑपरेटर.
  • .-सदस्य चयनकर्ता
  • ऑपरेटर का आकार
  • * -सदस्य सूचक चयनकर्ता

याद रखने वाली चीज़ें

  1. ऑपरेटर ओवरलोडिंग के साथ, आप ऑपरेटर के काम करने के तरीके को केवल उपयोगकर्ता-परिभाषित प्रकारों (ऑब्जेक्ट्स, स्ट्रक्चर) के लिए फिर से परिभाषित कर सकते हैं। आप इसे बिल्ट-इन प्रकारों (फ्लोट, चार, इंट, आदि) के लिए उपयोग नहीं कर सकते।
  2. = और & C++ ऑपरेटर डिफ़ॉल्ट रूप से ओवरलोड होते हैं। उदाहरण के लिए, आप = ऑपरेटर का उपयोग करके सीधे उसी क्लास के ऑब्जेक्ट की प्रतिलिपि बना सकते हैं।
  3. Operaटोर वरीयता ऑपरेटरों की साहचर्य और वरीयता को नहीं बदलती है। हालाँकि, आप कोष्ठक का उपयोग करके मूल्यांकन के क्रम को बदल सकते हैं।
  4. ऐसे चार ऑपरेटर हैं जिन्हें आप ओवरलोड नहीं कर सकते C++इनमें स्कोप रिज़ॉल्यूशन ऑपरेटर (::), सदस्य चयन ऑपरेटर (.), फ़ंक्शन ऑपरेटर के लिए पॉइंटर के माध्यम से सदस्य चयन (.*), और टर्नरी ऑपरेटर (?:) शामिल हैं।

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

इसके लिए नियम इस प्रकार हैं Operaटोर ओवरलोडिंग:

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

ओवरलोड कैसे करें Operaटो

उदाहरण 1

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

आउटपुट:

अधिभार Operaटोर उदाहरण

कोड का स्क्रीनशॉट यहां दिया गया है:

अधिभार Operaटोर उदाहरण

कोड स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल को शामिल करना।
  2. अपने प्रोग्राम में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
  3. नाम से एक क्लास बनाएं Operaटोर ओवरलोड.
  4. निजी पहुंच संशोधक का उपयोग करें, जो किसी वर्ग सदस्य को निजी रूप से पहुंच योग्य के रूप में चिह्नित करता है।
  5. एक पूर्णांक चर x बनाएँ। यह चर निजी रूप से सुलभ होगा।
  6. सार्वजनिक पहुँच संशोधक का उपयोग करें, जो किसी वर्ग सदस्य को निजी रूप से पहुँच योग्य के रूप में चिह्नित करता है।
  7. चर x को 10 पर आरंभ करने के लिए क्लास कन्स्ट्रक्टर का उपयोग करें।
  8. ++ ऑपरेटर का अर्थ ओवरलोड करें.
  9. ऑपरेटर चर x के मान में 2 की वृद्धि करेगा।
  10. ऑपरेटर ओवरलोडिंग अनुभाग का अंत। ऑपरेटर को नया नाम दिया गया है।
  11. Print() फ़ंक्शन को कॉल करना.
  12. जब Print() फ़ंक्शन को कॉल किया जाता है, तो कंसोल पर अन्य टेक्स्ट के साथ-साथ वेरिएबल x का मान प्रिंट करें।
  13. Print() फ़ंक्शन के मुख्य भाग का अंत.
  14. कक्षा का अंत.
  15. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के भीतर जोड़ा जाना चाहिए।
  16. इसका एक उदाहरण बनाएं OperatorOverload वर्ग का नाम ov.
  17. यह void ऑपरेटर ++() फ़ंक्शन को कॉल करेगा।
  18. का रुख का उपयोग करें OperatorOverload क्लास में Print() फ़ंक्शन को कॉल करें।
  19. फ़ंक्शन को सफलतापूर्वक पूरा होने पर मान लौटाना होगा.
  20. फ़ंक्शन main() के मुख्य भाग का अंत.

उदाहरण 2

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

आउटपुट:

अधिभार Operaटोर उदाहरण

कोड का स्क्रीनशॉट यहां दिया गया है:

अधिभार Operaटोर उदाहरण

कोड स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल को हमारे प्रोग्राम में शामिल करना।
  2. अपने प्रोग्राम में std नामस्थान को शामिल करें ताकि इसे कॉल किए बिना इसके क्लासों का उपयोग किया जा सके।
  3. TestClass नाम से एक क्लास बनाएँ। { क्लास बॉडी की शुरुआत को दर्शाता है।
  4. चरों को निजी के रूप में चिह्नित करने के लिए निजी पहुँच संशोधक का उपयोग करें, जिसका अर्थ है कि उन तक केवल क्लास के भीतर से ही पहुँचा जा सकता है।
  5. दो पूर्णांक चर, वास्तविक और ओवर को परिभाषित करें।
  6. कन्स्ट्रक्टर को सार्वजनिक के रूप में चिह्नित करने के लिए सार्वजनिक एक्सेस संशोधक का उपयोग करें, जिसका अर्थ है कि यह क्लास के बाहर भी पहुंच योग्य होगा।
  7. क्लास कन्स्ट्रक्टर बनाना और उसे आरंभ करना चर.
  8. चर वास्तविक का मान आरंभ करें.
  9. चर का मान आरंभ करें.
  10. कन्स्ट्रक्टर बॉडी का अंत.
  11. + ऑपरेटर का अर्थ ओवरराइड करें.
  12. TestClass प्रकार का डेटा प्रकार परिणाम बनाएँ.
  13. सम्मिश्र संख्याओं के साथ + ऑपरेटर का उपयोग करें। यह रेखा एक संख्या के वास्तविक भाग को दूसरी संख्या के वास्तविक भाग में जोड़ देगी।
  14. सम्मिश्र संख्याओं के साथ + ऑपरेटर का उपयोग करें। यह रेखा एक संख्या के काल्पनिक भाग को दूसरी संख्या के काल्पनिक भाग से जोड़ देगी।
  15. प्रोग्राम सफल निष्पादन पर चर परिणाम का मान लौटाएगा।
  16. + ऑपरेटर के नए अर्थ अर्थात ओवरलोडिंग की परिभाषा का अंत।
  17. print() विधि को कॉल करें.
  18. कंसोल पर जोड़ने के बाद नई जटिल संख्या प्रिंट करें।
  19. print() फ़ंक्शन के मुख्य भाग का अंत.
  20. TestClass क्लास के मुख्य भाग का अंत.
  21. main() फ़ंक्शन को कॉल करना.
  22. वास्तविक और सम्मिश्र दोनों भागों के मानों को जोड़ना होगा। c1 का पहला भाग c2 के पहले भाग में जोड़ा जाएगा, अर्थात 9+4। c1 का दूसरा भाग c के दूसरे भाग में जोड़ा जाएगा, अर्थात 5+3।
  23. ओवरलोडेड + ऑपरेटर का उपयोग करके एक ऑपरेशन निष्पादित करना और परिणाम को वेरिएबल c3 में संग्रहीत करना।
  24. कंसोल पर चर c3 का मान प्रिंट करना।
  25. main() फ़ंक्शन के मुख्य भाग का अंत.

सारांश

  • आप किसी शब्द के लिए एक से अधिक अर्थ निर्दिष्ट कर सकते हैं C++ ऑपरेटर एक दायरे में.
  • इसे ऑपरेटर ओवरलोडिंग कहा जाता है।
  • Operaटोर ओवरलोडिंग उपयोगकर्ता-परिभाषित डेटा प्रकार के लिए ऑपरेटर का एक विशेष अर्थ प्रदान करता है।
  • आप अधिकांश को पुनः परिभाषित कर सकते हैं C++ ऑपरेटरों के ओवरलोडिंग के कारण ऑपरेटर परेशान हो सकते हैं।
  • नहीं सभी C++ ऑपरेटरों पर अतिभार हो सकता है।
  • किसी ऑपरेटर को ओवरलोड करने के लिए, कम से कम एक ऑपरेंड उपयोगकर्ता-परिभाषित ऑब्जेक्ट होना चाहिए।
  • केवल मौजूदा ऑपरेटरों को ही ओवरलोड किया जा सकता है। आप नए ऑपरेटरों को ओवरलोड नहीं कर सकते।