Avatar ·

C++ में ऑपरेटर ओवरलोडिंग के मुख्य नियम और इडियम

सभी को नमस्ते! मैं C++ सीख रहा हूँ और ऑपरेटर ओवरलोडिंग को समझने की कोशिश कर रहा हूँ। मैंने कॉम्प्लेक्स नंबर्स के लिए एक सरल क्लास लिखा है, लेकिन मुझे कई समस्याओं का सामना करना पड़ा। यहाँ मेरा कोड है: ```cpp class Complex { public: double real, imag; Complex(double r, double i) : real(r), imag(i) {} // ऑपरेटर + का ओवरलोडिंग Complex operator+(Complex other) { return Complex(real + other.real, imag + other.imag); } // ऑपरेटर == का ओवरलोडिंग bool operator==(Complex other) { return (real == other.real && imag == other.imag); } }; int main() { Complex a(3.0, 4.0); Complex b(1.0, 2.0); Complex c = a + b; // काम करता है Complex d = 5.0 + a; // त्रुटि! क्यों? if (c == d) {} // काम करता है, लेकिन मैंने सुना है कि यह गलत है return 0; } ``` प्रश्न: 1. `5.0 + a` क्यों कंपाइल नहीं होता, जबकि `a + 5.0` काम करता है? 2. क्या मैंने `operator+` को सही ढंग से ओवरलोड किया है? "वैल्यू द्वारा रिटर्न का इडियम" क्या है? 3. `operator==` को सही तरीके से कैसे ओवरलोड करें?