कॉन्स शुद्धता मुझे कुछ उलझन में है।सी ++ में कॉन्स का उपयोग करने का सही तरीका क्या है?
अंगूठे का क्या नियम आप तय करने के लिए जब कुछ स्थिरांक या नहीं होना चाहिए प्रयोग करते हैं?
उदा। इस उदाहरण
class MyClass
{
string ToString(); // this one?
const string& ToString(); // or this?
const string& ToString() const; // or this?
char* ToString(); // What about this?
const char* ToString(); // or this?
const char* ToString() const; // or this?
const char const* ToString(); // Is this legal?
const char const* ToString() const; // how about this?
char const* ToString(); // or even this?
};
कॉन्स्ट पर विचार वास्तव में भ्रमित हो सकता है।
क्या इन सभी ToString विधियों के बीच अंतर हो सकता है?
अगर मैं सही ढंग से समझ, पहले एक एक नया स्ट्रिंग उद्देश्य यह है कि संशोधित किया जा सकता है, तो जरूरत पड़ने पर देता है। दूसरा एक रिटर्न एक निरंतर संदर्भ शायद यह स्ट्रिंग स्थिरांक & toString() होना चाहिए। तीसरा शायद एक बकवास है क्योंकि संदर्भ हमेशा स्थिर होते हैं क्या यह सही है?
सोचा मैं तुलना के लिए वहाँ में पुराने चार * संस्करणों फेंक था के रूप में मैं तरीकों कि वस्तु संकेत लौटने की क्या ज़रूरत है और मुझे यकीन है कि क्या वे स्थिरांक या नहीं होना चाहिए नहीं कर रहा हूँ।
मुझे लगता है कि मैं केवल स्थिरता की सीमाओं और लाभों को समझने की कोशिश कर रहा हूं और आगे कैसे निर्णय लेना चाहिए कि क्या कुछ होना चाहिए या नहीं और अलग-अलग स्थानों में स्थिरता रखने के बाद सही ढंग से लागू करना है।
संपादित करें: भी, मुझे लगता है कि '... छोड देता है क्वालिफायर' से निपटने के कैसे करते हैं। इसका वास्तव में क्या अर्थ है?
दूसरे और तीसरे के बीच कोई अंतर नहीं है। – dan04
मैं सामान्य नियम से शुरू करना पसंद करता हूं "यदि आप कहीं भी कॉन्स डाल सकते हैं तो आपको चाहिए।" जाहिर है कि उस नियम के अपवाद हैं (उनमें से बहुत से), लेकिन वास्तव में, जितना अधिक चर आप बना सकते हैं, उतना ही आसान होगा कि यह आपके कोड के बारे में तर्क, डीबग और बनाए रखे। मुझे लगता है कि यह कहीं अधिक आम बातों की तुलना में एक बेहतर प्रारंभिक बिंदु है "चलो केवल उस कॉन्स का उपयोग करें जहां हमें कुछ और स्थानों में होना चाहिए।" –
क्या आपने हर्ब सटर के गॉटव लेख को ["कॉन्स्ट सहीता"] पर पढ़ा है (http://www.gotw.ca/gotw/006.htm) यह एक उदाहरण वर्ग के माध्यम से जाता है और बताता है (1) 'कॉन्स्ट' क्या होना चाहिए और (2) 'const' का उपयोग करने के प्रभाव क्या हैं। यह निश्चित रूप से एक अच्छी शुरुआत जगह है। –