constexpr是一个编译修饰符,可以放在变量和函数之前,目的是告诉编译器,修饰的内容是一个常量值,至于是否是常量,由编译器确定。看下面例子
#include <iostream>
using namespace std;
constexpr int func1()
{
return 1123;
}
constexpr int func2(int n)
{
return n + 7;
}
int main()
{
func1();
func2(3);
return 0;
}
func1和func2都被constexpr修饰,告诉编译器在编译器可以将我当做常量值进行编译优化,但是只有func1可以被优化,因为func2需要运行时传入变量n才能确定func2的返回值(通俗来说,就是告诉编译器,我可以被优化,来优化我啊,但是你是不是真的具备被优化的资格,编译器决定)