constexpr函数是指能用于常量表达式的函数,定义constexpr的方式和其他函数的定义方式一样,但存在下面两个约束:
1、函数的返回值必须为字面值常量;
2、函数体中必须且只有一个return语句;
constexpr int new_sz(){return 42;}
constexpr函数时被隐式地指定为内联函数的。
constexpr函数体内也可以有其他的语句,只要运行时不执行任何操作即可,比如空语句,类型别名,using声明;我们允许constexpr函数的返回值并非一个常量:
constexpr size_t scale(size_t cnt){ return new_sz()*cnt; }
当scale的形参cnt为常量表达式时,其返回值也为常量表达式,如果cnt传入的是一个类型为size_t的变量a,那么其返回值就不是常量表达式。
和其他函数不一样的是,内联函数和constexpr函数可以在程序中多次定义, 不过某个给定的内敛函数或者constexpor函数来说,其定义必须是一致的,这样我们尽量要将内联函数和
constexpr函数通常定义在头文件中。
时间: 2024-10-25 19:02:52