函数
函数基础
局部静态对象
局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即使对象所在函数结束执行也不会对它有影响
指针或引用形参与 const
main: 处理命令行选项
列表初始化返回值
重载和 const 形参
重载和作用域
重载对作用域的一般性质没有什么改变,如果在内层作用域中声明名字,它将隐藏外层作用域中声明的同名实体。在不同的作用域中无法重载函数名
内联函数和constexpr函数
内联函数可以避免函数调用的开销。将函数指定为内联函数,通常就是将它在每个调用点上“内联地”展开。
一般来说,内联机制用于优化规模较小,流程直接,频繁调用的函数
constexpr 函数
constexpr 函数是指用于常量表达式的函数。定义constexpr函数的方法与其他函数类似,但是返回类型以及所有形参的类型都得是字面值类型,而且函数体中必须有且只有一条return语句
编译器把对 constexpr 函数的调用替换成其结果,为了能在编译过程中随时展开, constexpr 函数被隐式的指定为内联函数
constexpr 函数体内也可以包含其他语句,只要这些语句在运行时不执行任何操作
允许 constexpr 函数的返回值并非一个常量
调试帮助
assert 预处理宏
assert 宏定义在 cassert 头文件中
这个知识点先忽略掉吧,暂时用不到,用到的时候再看吧
函数指针
函数指针指向的是函数而非对象。
当我们把函数名作为一个值使用时,该函数自动转换成指针。
我们还可以直接使用指向函数的指针调用该函数,无须提前引用指针
给指针赋以恶搞nullptr 或者 值为 0 的整型常量表达式,表示该指针没有指向任何一个函数
重载函数指针
当我们使用重载函数时,上下文必须清晰的界定到底应选用哪个函数,如果定义了指向重载函数的指针,编译器通过指针类型决定选用哪个函数,指针类型必须与重载函数中的某一个精确匹配
函数指针形参
这两个声明语句声明的是同一个函数,在第一条语句中,编译器自动地将Func 表示的函数类型转换成指针
返回指向函数的指针
将 auto 和 decltype 用于函数指针类型