6.9 小结
本章首先讲述了函数的作用及模块化带给程序设计的好处,说明了函数的定义和调用方法。一个函数必须定义在其他函数的外部,并且在一个程序中只允许定义一次。在调用函数之前,一定要对被调用函数进行声明。使用static关键字修饰函数的定义和声明,可将其作用域限定在本文件之中。正确地使用inline函数可以提高程序的运行效率。
函数参数有3种传递方法:值传递、指针传递和引用传递。在前两种传递方式下,实参和形参占用不同的存储单元,形参值的变化不会影响到实参的值,这与引用传递不同。函数重载方便了程序设计。重载函数是指函数名相同,但参数个数或类型不能相同,如果参数个数和类型都相同,仅仅是返回类型不同,是不行的,而且,如果只是参数个数相同,推荐用默认参数调用机制。递归是一种解决问题的通用编程方法,编写递归函数时,不要忘记递归调用终止条件,且每调用一次应向调用终止靠近一步,以确保递归调用能够正常结束,不至于导致系统内存耗尽而崩溃。
理解C++的内存管理机制能帮助理解作用域、可见域和生存期等概念。对变量和函数等的访问实际上是对内存单元的访问,这是编程的实质。应掌握全局变量、自动变量、静态变量及使用new和delete动态申请释放内存的用法。在同一个作用域内,变量不能同名,否则,程序编译时,编译器会给出变量重复定义的错误信息。不同的作用域内,变量同名不会出现语法错误,但会出现屏蔽的情况,应特别注意。
尽管没有变量那么复杂的机制,函数也是存在作用域和可见域的,同全局变量一样,声明的位置和可见域有较大的关系。