在c++中,我们经常会遇到这样的情况,我们在我们遇到一个常量表达式。我们正常使用时,却无法通过编译,即使加上了const修饰符。这时就需要使用constexpr表示一个该值是一个常量。
#include <iostream>
using namespace std;
unsigned int constexpr GetNum()
{
return 10;
}
unsigned int constexpr AddNum(unsigned int a, unsigned int b)
{
return a + b;
}
unsigned int constexpr SwitchNum(int type)
{
switch (type)
{
case 1:
return 1;
case 2:
return 2;
default:
break;
}
return 3;
}
int main()
{
int arr1[GetNum()];//由于GetNum是一个常量表达式,所以可以通过编译。constexpr和const
//的最大区别是,const表示的是程序运行时的常量性。而constexpr则将表示提前到程序编译
//时的常量性。
int arr2[AddNum(5 ,7)];
int arr3[SwitchNum(2)];
constexpr unsigned int a = AddNum(5, 7);
}