प्रश्न को स्पष्ट करने के लिए यह एक सरल उदाहरण है:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
तो B, C का एक हिस्सा अपडेट करने के लिए जिम्मेदार है। मैंने लिंट के माध्यम से कोड चलाया और यह संदर्भ सदस्य के बारे में फुसफुसाया: lint # 1725 । यह डिफ़ॉल्ट कॉपी और असाइनमेंट की देखभाल करने के बारे में बात करता है जो काफी हद तक सही है, लेकिन डिफ़ॉल्ट कॉपी और असाइनमेंट पॉइंटर्स के साथ भी खराब है, इसलिए वहां बहुत कम फायदा है।
मैं हमेशा उन संदर्भों का उपयोग करने की कोशिश करता हूं जहां मैं नग्न बिंदुओं को अनिश्चित रूप से पेश कर सकता हूं जो उस सूचक को हटाने के लिए जिम्मेदार हैं। मैं वस्तुओं को मूल्य से एम्बेड करना पसंद करता हूं, लेकिन अगर मुझे एक पॉइंटर की आवश्यकता होती है, तो मैं पॉइंटर का मालिक होने वाले वर्ग के सदस्य डेटा में auto_ptr का उपयोग करता हूं और ऑब्जेक्ट को संदर्भ के रूप में पास करता हूं।
मैं आमतौर पर केवल सदस्य डेटा में एक पॉइंटर का उपयोग करता हूं जब पॉइंटर शून्य हो सकता है या बदल सकता है। क्या डेटा सदस्यों के संदर्भों पर संकेत पसंद करने के लिए कोई अन्य कारण हैं?
क्या यह कहना सही है कि किसी संदर्भ वाली वस्तु को असाइन नहीं किया जाना चाहिए, क्योंकि संदर्भ को एक बार प्रारंभ करने के बाद नहीं बदला जाना चाहिए?