2013-05-24 9 views
5

मुझे "कॉन्स्ट" पसंद है। मैं हर चर और विधि की इच्छा करता हूं कि "होना चाहिए" आईएस "कॉन्स्ट" होना चाहिए। समस्या यह है कि क्या एक चर या विधि "होना चाहिए" कॉल पेड़ में विधियों/चरों पर आगे निर्भर करता है। क्या कोड के एक शरीर की स्थिर जांच करने और "तल-अप एन-कॉन्स्ट-इफिकेशन" करने के लिए कुछ उपकरण, या कुछ प्रक्रिया है?सी ++ चर बनाने के लिए

+7

आपको कुछ 'कॉन्स' नहीं बनाना चाहिए क्योंकि आपने केवल 'कॉन्स्ट' सदस्य फ़ंक्शंस/फ़ंक्शंस का उपयोग किया है जो 'const &' लेते हैं। आपको इसे 'कॉन्स्ट' बनाना चाहिए क्योंकि आप जानते हैं कि इसे अवधारणात्मक रूप से नहीं बदला जाना चाहिए। – BoBTFish

उत्तर

6

मैं आपके सवाल का जवाब पता नहीं है, लेकिन मैं दावा है कि

है कि क्या एक चर या विधि "स्थिरांक होना चाहिए" और नीचे में पर तरीकों/चर निर्भर करता है के खिलाफ बहस चाहते हैं कॉल पेड़

दरअसल, कॉन्स लॉजिकल स्तर पर होना चाहिए। अर्थात। यदि आपको तर्कसंगत रूप से बदला नहीं जाना चाहिए तो आपको कुछ स्थिरांक चिह्नित करना चाहिए। यदि यह बाद में है, तो आपको एक कंपाइलर त्रुटि मिलेगी और आपको बदलने या आपके प्रारंभिक धारणा के तथ्य पर पुनर्विचार करने की आवश्यकता होगी।

नियम है:

अगर कुछ स्थिरांक है, यह तुलना में

बल्कि बदला नहीं जाना चाहिए अगर कुछ वास्तविक नहीं बदला गया है, तो चलो इसे बनाने कॉन्स

0

विभिन्न स्थिर हैं विश्लेषक उपकरण जो ऐसा कर सकते हैं। जिम्पेल फ्लेक्सलिंट दिमाग में आता है।

यह कहकर, यह परिणाम प्राप्त करना संभव है जो बिल्कुल सही नहीं लग रहा है।

class Wibble { 
    Some_Implementation_Detail *stuff; //PIMPL idiom 
    public: 
    void set_something(int a) { stuff->set(a); } 
}; 

तो set_something const बनाया जा सकता है: उदाहरण के लिए, इस दिए गए। यह तकनीकी रूप से सही है, लेकिन बहुत उपयोगी नहीं है, क्योंकि यह इस मामले में तर्कसंगत रूप से const नहीं है।

संबंधित मुद्दे