मैं सी ++ पूछे जाने वाले प्रश्न पढ़ रहा था - "8.6 - When should I use references, and when should I use pointers?" इस बयान और विशेष रूप से:सी ++ में कोई "पूर्ण संदर्भ" क्यों नहीं है?
उपयोग संदर्भ जब आप कर सकते हैं, और संकेत आप के लिए है जब। एक संदर्भ है कि एक वस्तु का उल्लेख नहीं करता -
...
अपवाद ऊपर करने के लिए जहां एक समारोह के पैरामीटर या वापसी मान एक "प्रहरी" संदर्भ की जरूरत है। यह आमतौर पर एक पॉइंटर लौटने/लेने के द्वारा किया जाता है, और नल पॉइंटर को यह विशेष महत्व देता है (संदर्भ हमेशा ऑब्जेक्ट्स को उपनाम करते हैं, न कि एक संदर्भित न्यूल पॉइंटर)।
जो मैंने देखा है, उससे "सेंटीनेल" संदर्भ की आवश्यकता वास्तव में अक्सर संदर्भों के बजाय पॉइंटर्स का उपयोग करने का कारण है। मैं क्या सोच रहा हूं: सी ++ में संदर्भों के लिए विशेष "पूर्ण मूल्य" क्यों नहीं है? ऐसा लगता है कि यह पॉइंटर्स को लगभग अनावश्यक बना देगा, जो कई समस्याओं का समाधान करेगा।
तो यह भाषा विनिर्देश का हिस्सा क्यों नहीं था?
संपादित करें:
मुझे यकीन है कि मेरे सवाल का स्पष्ट है नहीं कर रहा हूँ - मुझे लगता है मैं शून्य संदर्भों के बारे में litterally नहीं कह रहा हूँ। अक्सर मैं पढ़ता हूं कि सी ++ में "संदर्भ वस्तु है"। और, अधिकांश ओओपी भाषाओं में, ऑब्जेक्ट्स नल - पास्कल, सी #, जावा, जावास्क्रिप्ट, पीएचपी इत्यादि हो सकते हैं, इन सभी में आप someObject = null
या someObject := nil
कर सकते हैं। वास्तव में, पास्कल पॉइंटर्स का भी समर्थन करता है लेकिन अभी भी ऑब्जेक्ट्स को nil
होने की अनुमति देता है, क्योंकि इसका उपयोग होता है। तो सी ++ किसी भी तरह का विशेष क्यों है और इसमें कोई ऑब्जेक्ट नहीं है? क्या यह सिर्फ एक अनदेखी या वास्तविक निर्णय था?
प्रे कि कैसे संकेत की आवश्यकता को दूर होगा बता सकते हैं? –
@nathanwhite क्योंकि संदर्भ पॉइंटर्स के लिए वाक्य रचनात्मक चीनी होंगे, संभवतः, जब भी पॉइंटर्स होते हैं तब भी इसका उपयोग किया जा सकता है। कौन सा, आईएमओ, संदर्भों के कुछ लाभों को पूरी तरह से हटा देगा। – hvd
पढ़ें [क्यों सी दोनों संकेत और संदर्भ है ++ करता है?] (Http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references) और [सी ++: अशक्त संदर्भ] (http://stackoverflow.com/questions/4364536/c-null-reference)। –