1. const
(1) const可以在编译阶段初始也可以在运行阶段初始化;
const int a = 20;//编译阶段初始化;
std::string s("abcdef");
const auto b = s.length();//length()的返回值 size_type; //运行阶段初始化;
说明的意义:常常认为const是在编译阶段初始化,const的作用是提未此变量无论在编译阶段还
是运行阶段都不要改变它。
2. constexpr
(1) 变量:const并不限定是编译期常量还是运行期常量,而constexpr必须是编译期常量(在编译阶段得到结果)。
(2)参数: 如果参数可以在编译阶段确定,那么使用constexpr,如果不可以,使用了也会被编译器忽略。
const是一个多才多艺的家伙,重在多想多练习使用。