Introduction
C++ में Operator Overloading एक ऐसा feature है जो हमें existing operators को user-defined data types (classes/objects) के लिए customize करने की सुविधा देता है। जब हम objects के साथ काम करते हैं, तब सामान्य operators सीधे उन पर कार्य नहीं करते, इसलिए हमें उनके behavior को define करना पड़ता है।
Fundamentals of Operator Overloading में यह समझा जाता है कि operator overloading कैसे काम करता है, इसका syntax क्या है और इसे किस प्रकार implement किया जाता है।
Definition
Operator Overloading का मूल सिद्धांत यह है कि हम किसी existing operator को इस प्रकार redefine करें कि वह class objects पर meaningful तरीके से कार्य कर सके।
Basic Concept
जब हम operator को overload करते हैं, तो वह function call में बदल जाता है।
उदाहरण:
a + b → a.operator+(b)
यह दर्शाता है कि operator एक special function के रूप में कार्य करता है।
Operator Function का Syntax
returnType operator symbol (parameters) {
// function body
}
उदाहरण:
Number operator+(Number n)
Example (Basic Operator Overloading)
#include <iostream>
using namespace std;
class Number {
public:
int value;
Number(int v) {
value = v;
}
Number operator+(Number n) {
Number temp(0);
temp.value = value + n.value;
return temp;
}
};
int main() {
Number n1(5), n2(10);
Number n3 = n1 + n2;
cout << "Result: " << n3.value;
return 0;
}
Output:
Result: 15
Working को समझना
operator+को class के अंदर define किया गयाn1 + n2→ internallyn1.operator+(n2)बन गया- दोनों objects की values add हुई
- नया object return किया गया
Operator Overloading के प्रकार
1. Unary Operator Overloading
एक operand पर काम करता है
उदाहरण: ++, --
2. Binary Operator Overloading
दो operands पर काम करता है
उदाहरण: +, -, *
Important Points
- केवल existing operators को ही overload किया जा सकता है
- नए operators create नहीं किए जा सकते
- Operator की priority और associativity नहीं बदलती
- Operator overloading function के रूप में implement होता है
Simple Unary Example
#include <iostream>
using namespace std;
class Demo {
public:
int x;
Demo(int v) {
x = v;
}
void operator++() {
x++;
}
};
int main() {
Demo d1(10);
++d1;
cout << "Value: " << d1.x;
return 0;
}
Output:
Value: 11
निष्कर्ष
Fundamentals of Operator Overloading हमें यह समझने में मदद करते हैं कि operators को किस प्रकार functions के रूप में redefine किया जाता है और objects के साथ उपयोग किया जाता है। यह OOP में code को अधिक flexible और readable बनाता है।