第6章:函数

6.1 函数基础

6.1.1 局部对象

在这里插入图片描述

6.1.2 函数声明

在这里插入图片描述

6.1.3 分离式编译

编译和链接多个源文件

6.2 参数传递

6.2.1 传值参数

指针形参
在这里插入图片描述
在这里插入图片描述

6.2.2 传引用参数

在这里插入图片描述
使用引用避免拷贝
拷贝效率低或者有的类类型不支持拷贝
在这里插入图片描述
在这里插入图片描述
使用引用形参返回额外信息
一个函数只能返回一个值,引用形参可以返回多个结果
在这里插入图片描述

6.2.3 const形参和实参

当形参又顶层const时,传给他const或者非const都是可以的
在这里插入图片描述
在这里插入图片描述
指针或引用形参与const
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
尽量使用常量引用
把函数不会改变的形参定义成引用是一种常见的错误,这么做会给函数的调用者一种舞蹈,即函数可以修改它的实参的值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.4 数组形参

在这里插入图片描述
因为数组是以指针的形式传递给函数的,所以一开始函数并不知道数组的确切尺寸,函数的调用者应该为此提供一些额外的信息。
使用标记指定数组长度
C风格字符串末尾有空字符作为标记
在这里插入图片描述
使用标准库规范
传入指向数组首元素和尾元素的指针
在这里插入图片描述
显示传递一个表示数组大小的形参
在这里插入图片描述
数组形参和const
在这里插入图片描述
数组引用形参
在这里插入图片描述
传递多维数组
在这里插入图片描述

6.2.5 main:处理命令行选项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.6 含有可变形参的函数

initializer_list形参
用于函数实参数量未知,但是全部实参的类型都相同,其是一种标准库类型。
在这里插入图片描述
initializer_list 对象中的值永远是常量值,我们无法改变,这与vector不同
在这里插入图片描述
在这里插入图片描述
含有initializer_list形参的函数也可以同时拥有其它形参:
在这里插入图片描述
在这里插入图片描述
省略符形参
在这里插入图片描述
在这里插入图片描述

6.3 返回类型和return语句

6.3.1 无返回值函数

在这里插入图片描述

6.3.2 有返回值函数

在这里插入图片描述
值是如何被返回的
在这里插入图片描述
不要返回局部对象的引用或指针
在这里插入图片描述
返回类类型的函数和调用运算符

在这里插入图片描述
引用返回左值
在这里插入图片描述
列表初始化返回值
在这里插入图片描述
主函数main的返回值
在这里插入图片描述
递归
在这里插入图片描述

6.3.3 返回数组指针

因为数组不能拷贝,所以函数不能返回数组,但可返回数组的指针或引用
在这里插入图片描述
声明一个返回数组指针的函数
在这里插入图片描述
在这里插入图片描述
使用尾置返回类型
在这里插入图片描述
使用decltype
在这里插入图片描述

6.4 函数重载

在这里插入图片描述
在这里插入图片描述
定义重载函数
在这里插入图片描述
判断两个形参的类型是否相异
在这里插入图片描述
重载和const形参
在这里插入图片描述
const_cast和重载
在这里插入图片描述
调用重载的函数
在这里插入图片描述

6.4.1 重载与作用域

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.5 特殊用途语言特性

6.5.1 默认实参

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用默认实参调用函数
如果我们想使用默认实参,只要在调用函数的时候省略该实参就可以了
默认实参声明
在这里插入图片描述

默认实参初始值
在这里插入图片描述

6.5.2 内联函数和constexpr函数

在这里插入图片描述
内联函数可避免函数调用的开销
在这里插入图片描述
constexpr函数
指能用于产量表达式的函数
在这里插入图片描述
内联函数和constexpr函数放在头文件内
在这里插入图片描述

6.5.3 调试帮助

在这里插入图片描述

assert预处理宏
在这里插入图片描述
NDEBUG预处理变量
在这里插入图片描述

6.6 函数匹配

确定候选函数和可行函数
寻找最佳匹配
含有多个形参的函数匹配

6.6.1 实参类型转换

在这里插入图片描述

6.7 函数指针

函数指针指向某种特定类型,函数累心由它的返回类型和形参共同决定,与函数名无关。
在这里插入图片描述
在这里插入图片描述
使用函数指针
在这里插入图片描述
重载函数的指针
编译器通过指针累心决定选用哪个函数,指针类型必须与 重载函数中的某一个精确匹配
函数指针形参
在这里插入图片描述
在这里插入图片描述
返回指向函数的指针
和数组类似,虽然不能返回一个函数,但是能返回指向函数类型的指针。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将auto和decltype用于函数指针类型
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tanfuz/article/details/114109247