第六章 函数
6.1 函数基础
6.1.1 局部对象
局部静态对象:程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即使对象所在的函数结束执行也不会对它有影响。
6.1.2 函数声明
含有函数声明的头文件应该被包含到定义函数的源文件中。
6.1.3 分离式编译
6.2 参数传递
6.2.1 传值参数
6.2.2 传引用参数
使用引用避免拷贝
使用引用形参返回额外信息
6.2.3 const形参和实参
当形参有顶层const时,传给它常量对象或者非常量对象都是可以的。
尽量使用常量引用。
把函数不会改变的形参定义为普通的引用是一种比较常见的错误。
6.2.4 数组形参
使用标准库规范: const int *beg,const int *end
显示传递一个表示数组大小的形参
6.2.5 main:处理命令行选项
int argc, char **argv
当使用argv中的实参时,argv[0]保存程序的名称,而非用户输入
6.2.6 含有可变形参的函数
1、如果函数的实参数量未知,但是类型相同,使用initializer_list类型的形参。
void error_msg(initializer_list<string> il)
2、省略形参
大多数类类型的对象在传递给省略符形参时都无法正确拷贝
6.3 返回类型和return语句
6.3.1 无返回值函数
6.3.2 有返回值函数
不要返回局部对象的引用或指针
6.3.3 返回数组指针
6.4 函数重载
如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载。