जब आप प्रत्येक उपयोग करना चाहिए:
संदर्भ: डिफ़ॉल्ट रूप से इन का प्रयोग करें। लोगों के लिए नल पॉइंटर्स को अपमानित करना बहुत आम है। आप उस जोखिम को संदर्भ के साथ खत्म करते हैं।
कॉन्स पॉइंटर: जब आप कोई संदर्भ चाहते हैं, लेकिन एक नहीं बना सकते हैं। उदाहरण के लिए, आप एक ड्राइवर लिख रहे हैं, और आप एक मेमोरी मैप की शुरुआत में एक सूचक चाहते हैं।एक संदर्भ उस मामले में ज्यादा समझ में नहीं आता है। साथ ही, यदि आपको चीजों की एक सरणी की आवश्यकता है, तो एक संदर्भ काम नहीं करेगा (हालांकि संदर्भ सदस्यों के साथ सरल वर्गों की एक सरणी होगी)।
अगले उदाहरण में, एक स्थिरांक सूचक है कि एक संदर्भ की जाँच नहीं कर सकते हैं एक त्रुटि की जाँच करता है:
int addFour(int* register){
if(isNull(arg)){
throw NullPointerException();
}
// some stuff
*register += 4;
return register;
}
// This could be any function that does pointer math.
bool isNull(const int* ptr){
return(NULL == ptr);
}
इसके अलावा, एक संदर्भ किसी संदर्भ में _alias_ है। इसका मतलब है कि संदर्भ को बिना किसी संदर्भ के इस्तेमाल किया जा सकता है (भ्रमित शब्दावली को क्षमा करें)। –