ऑब्जेक्ट्स को फ़ंक्शन्स में पास करने के चार तरीके हैं। मान लें आपके पास क्लास X है और आप इसे फ़ंक्शन fun में पास करना चाहते हैं, तो:
वैल्यू द्वारा पास करें
यह फ़ंक्शन स्कोप में ऑब्जेक्ट की एक शैलो लोकल कॉपी बनाता है। यहां आपके द्वारा मॉडिफाई की गई चीजें पास किए गए ऑब्जेक्ट में रिफ्लेक्ट नहीं होंगी। उदाहरण के लिए,
घोषणा
void fun(X x);
कॉलिंग
X x; fun(x);
रेफरेंस द्वारा पास करें
यह ऑब्जेक्ट का रेफरेंस फ़ंक्शन को पास करता है। यहां आपके द्वारा मॉडिफाई की गई चीजें पास किए गए ऑब्जेक्ट में रिफ्लेक्ट होंगी। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण के लिए,
घोषणा
void fun(X &x);
कॉलिंग
X x; fun(x);
कॉन्स्ट रेफरेंस द्वारा पास करें
यह ऑब्जेक्ट का कॉन्स्ट रेफरेंस फ़ंक्शन को पास करता है। आप यहां सीधे ऑब्जेक्ट को मॉडिफाई/रीअसाइन नहीं कर सकते (हालांकि आप इसके मेथड्स का उपयोग कर सकते हैं जो ऐसा करते हैं)। यह उपयोगी है यदि आप चाहते हैं कि फ़ंक्शन के पास ऑब्जेक्ट की केवल रीड-ओनली कॉपी हो। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण के लिए,
घोषणा
void fun(X const &x);
कॉलिंग
X x; fun(x);
कॉन्स्ट पॉइंटर द्वारा पास करें
यह ऑब्जेक्ट का कॉन्स्ट पॉइंटर फ़ंक्शन को पास करता है। आप यहां पॉइंटर को मॉडिफाई/रीअसाइन नहीं कर सकते। यह उपयोगी है यदि आप चाहते हैं कि फ़ंक्शन के पास इस ऑब्जेक्ट का पता केवल पॉइंटर में हो। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण के लिए,
घोषणा
void fun(X const *x);
कॉलिंग
X x; fun(&x);
पॉइंटर द्वारा पास करें
यह ऑब्जेक्ट का पॉइंटर फ़ंक्शन को पास करता है। यह ऑब्जेक्ट को रेफरेंस द्वारा पास करने के समान है। ऑब्जेक्ट की कोई कॉपी नहीं बनती। उदाहरण के लिए,
घोषणा
void fun(X *x);
कॉलिंग
X x; fun(&x);