تفاوت const و constexpr - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تفاوت const و constexpr

0 امتیاز
سلام .کسی می تونه توضیح بده تفاوت const و constexpr دقیقا کجاست؟const که خیلی ساده است یعنی هیچ وقت نباید تغییر کنه و constexpr نمی فهمم.
سوال شده مرداد 9, 1402  بوسیله ی tara_s (امتیاز 140)   3 15 20

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

constexpr هم مقدارش در طول برنامه ثابته ولی با این تفاوت که مقدارش مثل const یک عدد نیست بلکه محاسبه میشه اون هم در زمان کامپایل .تو c++20 هم یک کلمه کلیدی به نام consteval اضافه شده که تابع را مجبور می کنه که در زمان کامپایل محاسبه بشه نه در زمان اجرا.به مثال زیر توجه کنید.

#include <iostream>

consteval int factorial(int n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}

int main() {
    constexpr int constantExpression = factorial(5);
    // constantExpression = 20; // Error: You cannot modify the consteval variable.
    
    std::cout << "constantExpression: " << constantExpression << std::endl;
    return 0;
}

 

پاسخ داده شده مرداد 9, 1402 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
انتخاب شد شهریور 8, 1402 بوسیله ی مصطفی ساتکی
...