Introduction to C++ operator overloading
C++ operator overloading |
जैसा की आपको पता है, class एक user defined data type होती है। C++ में provide किये गए operators से आप primitive types (integer, floating point, character) के variables के साथ विभिन्न operations (Addition, Division, Multiplication आदि) perform करते है। लेकिन इन operators को यूज़ करके आप class के variables (objects) के साथ कोई भी operations perform करेंगे तो error generate होगी।
उदाहरण के लिए आप एक class के 2 objects को इन operators द्वारा add नहीं कर सकते है। लेकिन जैसा की मैने आपको पहले tutorials में बताया की class types पर भी आप normal variables की तरह ही operations perform कर सकते है। इसके लिए C++ आपको एक mechanism provide करती है जिसे operator overloading कहते है।
इस mechanism में आप operators की meaning को change करके उन्हें दूसरी meaning देते है। इन operators को meaning इस प्रकार दी जाती है की ये class type के variables (objects) के साथ भी काम कर सकें। उदाहरण के लिए आप Addition (+) operator को overload करके उसे इस प्रकार change कर सकते है की वो किसी class के 2 objects को add कर दे ताकि आप उस result को किसी तीसरे object में store कर सकें।
Operator overloading का मतलब operators का अर्थ बदलना होता है। ये अर्थ सिर्फ user defined data types जैसे की class आदि के संदर्भ में ही बदलता है। Primitive types के साथ operators को उसी प्रकार यूज़ किया जा सकता है जैसे की आप operator overloading से पहले करते थे।
Operator overloading एक बहुत ही interesting feature है। लेकिन कुछ ऐसे भी operators है जिन्हें आप overload नहीं कर सकते है। इनके बारे में नीचे दिया जा रहा है।
Class member access operators (.,.*)Scope resolution operator (::)Size of operator (sizeof)Conditional Operator (?:)ऊपर दिए गए operators को छोड़कर आप C++ के सभी operators को overload कर सकते है।
हालाँकि operator overloading द्वारा आप operators का मतलब बदल सकते है, लेकिन उनका syntax नहीं change किया जा सकता है।
उदाहरण के लिए multiplication operation के लिए 2 operands का होना जरुरी है, इसे change नहीं किया जा सकता है। साथ ही operators की precedence (order) भी नहीं बदलती है।
please comment your choice game ...