在函数返回类型前面加上关键字 inline 就可以把函数声明为内联函数:
内联说明只是向编译器发出一个请求,编译器可以忽略也可以接受。
inline int Numbers(const int num1, const int num2)
{
return num1 < num2 ? num1 : num2;//比较两个数字的大小并返回小的
}
想要声明成内联函数的函数一般要满足里面的代码实现不要太复杂,但是又是被频繁调用的函数。
constexpr函数:
constexpr函数是指能用于常量表达式的函数。
需要遵循一些约定:
函数的返回类型及所有形参的类型都得是字面值类型,函数体中必须有且只能有一条return语句:
constexpr int _Sum()
{
return 78;
}
constexpr int fo = _Sum();
我们在后面无法直接去修改 fo 值;但可以利用_Sum函数去修改它的值。
上面在初始化 fo 的时候,编译器会把对 constexpr 的函数的调用替换成它的结果值(就是它的return 78),为了能在编译过程中随时展开, constexpr函数被隐式地指定为内联函数。
constexpr 函数体内也可以包含其他语句,只要这些语句在运行时不执行任何操作就行。
允许 constexpr函数的返回值不一定是一个常量。
内联函数和 constexpr 函数可以在程序中多次定义,它的多个定义必须完全一致,所以内联函数和 constexpr函数通常定义在头文件中。