Const आर्गुमेंट सी ++

Const आर्गुग्स में एक लगातार समस्या है सी ++ में एक लगातार समस्या - डमीज

चूंकि सी ++ तर्क के मूल्य से गुजरता है, आप कॉन्स्ट-नेस द्वारा अंतर नहीं कर सकते निम्न में, वास्तव में अधिकतम () को पारित किया जाता है, मान 2 है। 0 और 0. 0. अधिकतम () फ़ंक्शन यह नहीं बता सकता है कि ये मान डीएआरजी जैसे एक चर से आए या स्थिर 0 की तरह। 0.। < डबल अधिकतम (डबल डी 1, डबल डी 2); शून्य अन्य कार्य () {डबल डीएआरग = 2. 0; डबल dNonNegative = अधिकतम (डीएआरग, 0. 0);

 आप 

कर सकते हैं कॉन्स्ट होने के लिए फ़ंक्शन के तर्कों को घोषित करें इस तरह की घोषणा का मतलब है कि आप फ़ंक्शन के भीतर तर्क का मूल्य नहीं बदल सकते। यह अधिकतम (डबल, डबल) के निम्नलिखित कार्यान्वयन में प्रदर्शित किया गया है:

डबल अधिकतम (कॉन्स्ट डबल डी 1, कॉन्स्ट डबल डी 2) {डबल डीआरसल्ट = डी 1; यदि (d2> dResult) {dResult = d2;} // निम्नलिखित अवैध होगा d1 = 0. 0; d2 = 0. 0 रिटर्न dResult;}
 डी 1 और डी 2 को असाइनमेंट की अनुमति नहीं है क्योंकि दोनों को कॉन्स्ट घोषित किया गया है और इसलिए अस्थिर नहीं हैं। 

क्या कानूनी नहीं है निम्नलिखित है:

// इन दो फ़ंक्शंस अलग-अलग डबल अधिकतम (डबल डी 1, डबल डी 2) को अलग करने योग्य नहीं हैं; डबल अधिकतम (कॉन्स्ट डबल डी 1, कॉन्स्ट डबल डी 2); शून्य अन्य कार्य () {डबल डीएआरग = 2. 0; // C ++ यह नहीं जानता कि ऊपर दिए गए कार्यों में से कौन से एक डबल dNonNegative = अधिकतम (डीएआरग, 0 0) कॉल करने के लिए;

 जब आप कॉल करते हैं तो सी ++ में दो के बीच अंतर करने का कोई तरीका नहीं है।