Avatar ·

ما الفرق بين constexpr و const في لغة C++؟

مرحبًا! لقد بدأت مؤخرًا في تعلم C++11 وصادفت الكلمة المفتاحية `constexpr`. أفهم أن `const` تعني أن قيمة المتغير لا يمكن تغييرها بعد التهيئة. لكن `constexpr` أيضًا تجعل المتغير ثابتًا. إذن ما الفرق؟ على سبيل المثال، يمكنني كتابة: ```cpp const int x = 5; constexpr int y = 5; ``` كلا الخيارين يعملان. لكنني سمعت أن `constexpr` يمكن استخدامها مع الدوال. جربت: ```cpp constexpr int square(int n) { return n * n; } int main() { const int a = square(5); // هل يعمل؟ constexpr int b = square(5); // هل يعمل أيضًا؟ int arr[ square(3) ]; // هل يمكن ذلك؟ } ``` هذا يتم ترجمته، لكنني لا أفهم ما هي الميزة الحقيقية. متى يجب استخدام `constexpr` بدلاً من `const`؟ ولماذا لا يكفي `const` فقط؟ يبدو لي أن هذا تكرار للوظائف. اشرح لي، من فضلك، مع أمثلة عن متى تستخدم كلًا منهما. شكرًا مقدمًا!