《C++ Primer》--学习4

函数

函数基础

局部静态对象

局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即使对象所在函数结束执行也不会对它有影响

指针或引用形参与 const

《C++ Primer》--学习4_第1张图片

《C++ Primer》--学习4_第2张图片

《C++ Primer》--学习4_第3张图片

 main: 处理命令行选项

《C++ Primer》--学习4_第4张图片

《C++ Primer》--学习4_第5张图片

 列表初始化返回值

《C++ Primer》--学习4_第6张图片

重载和 const 形参

《C++ Primer》--学习4_第7张图片

《C++ Primer》--学习4_第8张图片

重载和作用域

 重载对作用域的一般性质没有什么改变,如果在内层作用域中声明名字,它将隐藏外层作用域中声明的同名实体。在不同的作用域中无法重载函数名

《C++ Primer》--学习4_第9张图片

 内联函数和constexpr函数

内联函数可以避免函数调用的开销。将函数指定为内联函数,通常就是将它在每个调用点上“内联地”展开。

《C++ Primer》--学习4_第10张图片

 一般来说,内联机制用于优化规模较小,流程直接,频繁调用的函数

constexpr 函数

constexpr 函数是指用于常量表达式的函数。定义constexpr函数的方法与其他函数类似,但是返回类型以及所有形参的类型都得是字面值类型,而且函数体中必须有且只有一条return语句

 编译器把对 constexpr 函数的调用替换成其结果,为了能在编译过程中随时展开, constexpr 函数被隐式的指定为内联函数

constexpr 函数体内也可以包含其他语句,只要这些语句在运行时不执行任何操作

允许 constexpr 函数的返回值并非一个常量

 调试帮助

assert 预处理宏

 assert 宏定义在 cassert 头文件中

这个知识点先忽略掉吧,暂时用不到,用到的时候再看吧

函数指针

函数指针指向的是函数而非对象。

当我们把函数名作为一个值使用时,该函数自动转换成指针。

我们还可以直接使用指向函数的指针调用该函数,无须提前引用指针

给指针赋以恶搞nullptr 或者 值为 0 的整型常量表达式,表示该指针没有指向任何一个函数

《C++ Primer》--学习4_第11张图片

 重载函数指针

当我们使用重载函数时,上下文必须清晰的界定到底应选用哪个函数,如果定义了指向重载函数的指针,编译器通过指针类型决定选用哪个函数,指针类型必须与重载函数中的某一个精确匹配

 函数指针形参

《C++ Primer》--学习4_第12张图片

《C++ Primer》--学习4_第13张图片

这两个声明语句声明的是同一个函数,在第一条语句中,编译器自动地将Func 表示的函数类型转换成指针

返回指向函数的指针

《C++ Primer》--学习4_第14张图片

将 auto 和 decltype 用于函数指针类型

《C++ Primer》--学习4_第15张图片

 

你可能感兴趣的:(C++,C++)