Avatar ·

C++ में constexpr और const के बीच क्या अंतर है?

सभी को नमस्कार! मैंने C++11 सीखना शुरू किया है और एक नए कीवर्ड `constexpr` पर ध्यान गया। पहले मैं हमेशा `const` का उपयोग अपरिवर्तनीय वेरिएबल घोषित करने के लिए करता था। लेकिन अब `constexpr` भी आ गया है, और मैं पूरी तरह से समझ नहीं पा रहा हूँ कि कब क्या उपयोग करना चाहिए। उदाहरण के लिए, मैं ऐसा कोड लिखता हूँ: ```cpp const int size = 5; int arr[size]; // यह काम करता है ``` लेकिन अगर मैं लिखूँ: ```cpp int get_size() { return 5; } const int size = get_size(); int arr[size]; // पुराने मानकों में कंपाइलेशन एरर! ``` मैं समझता हूँ कि `const` केवल इनिशियलाइज़ेशन के बाद वेरिएबल को बदलने से रोकता है, लेकिन यह गारंटी नहीं देता कि मान कंपाइल-टाइम पर ज्ञात है। वहीं, मैं `constexpr` के उदाहरण देखता हूँ: ```cpp constexpr int square(int x) { return x * x; } constexpr int val = square(5); // ठीक है, कंपाइल-टाइम पर गणना होती है ``` प्रश्न: 1. वेरिएबल के लिए `const` और `constexpr` में मूलभूत अंतर क्या है? 2. फंक्शन के लिए `constexpr` का उपयोग कब करना चाहिए? 3. क्या `constexpr` हर जगह `const` को बदल सकता है? कृपया समझाएँ।

अभी तक कोई उत्तर नहीं।

लॉग इन करें उत्तर देने के लिए

ब्लॉग