एक पूर्णांक एक समारोह के अंदर उपयोग करने के लिए निरंतर परिभाषित करने के लिए विशिष्ट तरीका है:क्या सी ++ कोड में एकल स्थिरता को परिभाषित करने के लिए enum का उपयोग करने का कोई कारण है?
const int NumbeOfElements = 10;
एक वर्ग के भीतर का उपयोग कर के लिए एक ही:
class Class {
...
static const int NumberOfElements = 10;
};
यह तो एक निश्चित-आकार सरणी के रूप में इस्तेमाल किया जा सकता बाध्य जिसका मतलब है कि यह संकलन समय पर जाना जाता है।
बहुत वर्ष पहले compilers बाद वाक्य रचना का समर्थन नहीं किया और यही कारण है enums इस्तेमाल किया गया है:
enum NumberOfElementsEnum { NumberOfElements = 10; }
अब लगभग हर व्यापक रूप से इस्तेमाल संकलक समर्थन के साथ दोनों में समारोह const int
और इन-क्लास static const int
वाक्य रचना है इस उद्देश्य के लिए enum का उपयोग करने का कोई कारण है?
हम्म, जीसीसी इस बारे में शिकायत नहीं करता है -पैंटिक -Wall -Wextra के साथ भी। मुझे लगता है क्योंकि यह लिंक समय तक त्रुटि का पता नहीं लगा सकता है, यह इस तरह के गैर पोर्टेबल कोड का निदान करने की कोशिश करने पर छोड़ देता है। –
अच्छा जवाब। एक और अच्छी बात यह है कि आप स्पष्ट रूप से उल्लेख नहीं करते हैं कि एक enum एक रैल्यू है, और इसलिए इसके लिए कोई भंडारण आवंटित नहीं किया जाता है। यह जानना अच्छा लगेगा कि * निश्चित रूप से *, यदि आप टेम्पलेट मेटाप्रोग्रामिंग कर रहे हैं और बड़ी संख्या में क्लास टेम्पलेट्स को तत्काल कर रहे हैं तो संकलक अनुकूलन पर भरोसा करने के बजाय। – jalf
यदि वर्ग के बाहर 'स्थिर कॉन्स int' के लिए कोई परिभाषा नहीं है, तो उसके लिए आवंटित कोई भी संग्रहण नहीं होगा। इसके अलावा, रावलों के पास उनके लिए आवंटित भंडारण भी हो सकता है (उदाहरण के लिए, अस्थायी हैं, और वे निश्चित रूप से भंडारण का उपयोग करते हैं)। –