में संदर्भ विकल्पों द्वारा उत्तीर्ण करना मैं कक्षा ए के किसी ऑब्जेक्ट को पास करना चाहता हूं (व्यापक रूप से, यानी ए & या ए * द्वारा) किसी अन्य कक्षा बी के निर्माता को। नहीं चाहते कि 'ए' को बी के अंदर संशोधित किया जाए ('ए' केवल पढ़ा जाता है और यह आकार में बड़ा है इसलिए मैं इसे संदर्भ से पास करना चाहता हूं)। मैं दो विकल्पों में से जानते हैं:सी ++
1) पास 'एक' के रूप में
const A & a_
2) दर्रा 'एक'
रूपconst A * a_
विकल्प 1 का नुकसान यह है कि मैं गलती से किसी से पारित सकता है आर-मूल्य। विकल्प 2 का नुकसान यह है कि मैं गलती से एक शून्य सूचक पास कर सकता हूं।
मेरे प्रश्न हैं: 1) क्या मैं उपरोक्त नुकसान के बारे में सही हूं? 2) क्या संदर्भ द्वारा 'ए' पास करने का कोई और अनुशंसित तरीका है?
मैंने नीचे दिए गए लिंक में उत्तरों को देखा। लेकिन अगर मैं उस प्रश्न में पोस्ट की गई तुलना में अन्य विकल्प हैं तो मैं उत्सुक हूं। Are there benefits of passing by pointer over passing by reference in C++?
कैसे संभावित यह है कि आप गलती से एक आर-मूल्य पारित करेंगे, और कैसे गंभीर है कि कार्रवाई के परिणामों हो जाएगा? – emlai
यदि आपकी चिंताएं हैं, और आप समस्याओं को जानते हैं, तो आपको त्रुटि जांच की आवश्यकता है। संदर्भ द्वारा पास करें और कोशिश करें/पकड़ें। यदि आप इसे पॉइंटर द्वारा करते हैं, तो आप अपनी ऑब्जेक्ट के मूल उदाहरण को संशोधित करेंगे। –
एक रैल्यू क्या है? क्या यह एक अनिर्धारित समानता है? एक लालसा की तरह? –