निम्न कोड C++ में कैसे काम करता है? क्या यह तार्किक है?कॉन्स संदर्भों के लिए प्रारंभिक प्रारंभ
const int &ref = 9;
const int &another_ref = ref + 6;
सी ++ गैर-कॉन्स्ट संदर्भों के लिए अनुमति नहीं होने पर कॉन्स्ट संदर्भों के लिए शाब्दिक प्रारंभिक अनुमति क्यों देता है? उदा .:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
इस तथ्य यह है कि, एक गैर स्थिरांक संदर्भ चर यह करने के लिए बात कर रहा है के मूल्य को बदलने के लिए इस्तेमाल किया जा सकता से समझाया जा सकता। इसलिए, सी ++ एक कॉन्स वैरिएबल के गैर-कॉन्स्ट संदर्भ की अनुमति नहीं देता है।
क्या यह एक संभावित स्पष्टीकरण हो सकता है? सी ++ अनुमति नहीं देता:
int &ref = 7;
क्योंकि वह तार्किक नहीं है, लेकिन:
const int val = 7;
तो शाब्दिक प्रारंभ स्थिरांक चर के लिए अनुमति दी है:
const int &ref = 7;
के लगभग बराबर है।
पीएस .: मैं वर्तमान में लिप्पमैन के सी ++ प्राइमर का अध्ययन कर रहा हूं।
+1। लेकिन मुझे लगता है कि आपका दूसरा उदाहरण { स्ट्रिंग __internal_unique_name ("foobar") में बदल दिया जाएगा; एफ (__ internal_unique_name); } – mmmmmmmm
@ रिस्टवेन्स: इससे कोई फर्क नहीं पड़ता: रूपांतरण स्पष्ट नहीं होना चाहिए, इस मामले में वे वही हैं। –