C++ में किसी ऑब्जेक्ट को फंक्शन में पास करने के चार मुख्य तरीके हैं। मान लीजिए आपके पास एक क्लास X है और आप इसे फंक्शन fun में पास करना चाहते हैं, तो:
1. वैल्यू द्वारा पास (Pass by Value)
यह फंक्शन के स्कोप में ऑब्जेक्ट की एक शैलो लोकल कॉपी बनाता है। यहां किए गए परिवर्तन मूल ऑब्जेक्ट में प्रतिबिंबित नहीं होते। उदाहरण:
घोषणा
void fun(X x);
कॉल करना
X x; fun(x);
2. रेफरेंस द्वारा पास (Pass by Reference)
यह ऑब्जेक्ट का रेफरेंस फंक्शन को पास करता है। यहां किए गए परिवर्तन मूल ऑब्जेक्ट में प्रतिबिंबित होते हैं। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण:
घोषणा
void fun(X &x);
कॉल करना
X x; fun(x);
3. कॉन्स्ट रेफरेंस द्वारा पास (Pass by const Reference)
यह ऑब्जेक्ट का कॉन्स्ट रेफरेंस फंक्शन को पास करता है। आप यहां सीधे ऑब्जेक्ट को संशोधित/रीअसाइन नहीं कर सकते (हालांकि आप इसके उन मेथड्स का उपयोग कर सकते हैं जो ऐसा करते हैं)। यह तब उपयोगी होता है जब आप चाहते हैं कि फंक्शन के पास ऑब्जेक्ट की केवल रीड-ओनली कॉपी हो। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण:
घोषणा
void fun(const X &x);
कॉल करना
X x; fun(x);
4. पॉइंटर द्वारा पास (Pass by Pointer)
यह ऑब्जेक्ट का पॉइंटर फंक्शन को पास करता है। यह रेफरेंस द्वारा पास करने के समान है। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण:
घोषणा
void fun(X *x);
कॉल करना
X x; fun(&x);
5. कॉन्स्ट पॉइंटर द्वारा पास (Pass by const Pointer)
यह ऑब्जेक्ट का कॉन्स्ट पॉइंटर फंक्शन को पास करता है। आप यहां पॉइंटर को संशोधित/रीअसाइन नहीं कर सकते। यह तब उपयोगी होता है जब आप चाहते हैं कि फंक्शन के पास केवल इस ऑब्जेक्ट का एड्रेस पॉइंटर में हो। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण:
घोषणा
void fun(const X *x);
कॉल करना
X x; fun(&x);