参考答案
结论:const表示只读,侧重运行时不修改;constexpr表示编译期常量,要求编译时可求值。要点:1.const用于变量、参数、成员函数,限定不可修改,但初始值可为运行时确定,如const int a = cin.get();。2.constexpr自C++11引入,修饰变量必须在编译期确定,可用于数组大小、模板非类型参数;修饰函数若传入编译期常量则产生编译期结果,否则按普通函数。3.差异:const变量内存可能分配也可能不;constexpr变量通常放入只读段或内联;const指针与constexpr指针顶层/底层const需注意。4.示例:constexpr int N=10; int arr[N]; 合法;const int M=rand(); int arr2[M]; 非法。C++14后constexpr函数可含循环与变量。