1、函数
C++ 继承了 C 语言的全部语法,也包括函数的定义与使用方法。
1.1 函数的定义与使用
主函数是程序执行的开始点,由主函数调用子函数,子函数还可以调用其他子函数。
1.2 函数的定义
形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据、影响函数功能的因素或
者函数处理的结果作为形参。
只有函数被调用时才由主调函数将实际参数(实参)赋予形参。
一个函数可以有返回值,也可以没有返回值,没有返回值的时候类型标识符是 void ,可以不写 return 语
句,也可以写一个不带表达式的 return 表示结束当前函数的调用。
1.3 函数的调用
在调用函数前,要声明或定义该函数。
1.4 函数的参数传递
值传递:单向传递;
引用传递:可以实现双向传递,声明引用的时候必须同时对它初始化,指向一个已存在的对象,并且不
能更改;
常引用作参数可以保障实参数据的安全。
2、内联函数
声明时使用关键字 inline 。
编译时在调用处用函数体进行替换 , 节省了参数传递、控制转移等开销。
注意:
内联函数应是比较简单的函数。如果已定义的函数多于一行,编译器会忽略 inline 限定符。
内联函数体内不能有循环语句和 switch 语句。
内联函数的声明必须出现在内联函数第一次被调用之前。 对内联函数不能进行异常接口声明。
下面是一个实例,使用内联函数来返回两个数中的最大值:
#include <iostream>
using namespace std;
inline int Max(int x, int y)
{
return (x > y)? x : y;
}
// 程序的主函数
int main( )
{
cout << "Max (20,10): " << Max(20,10) << endl;
cout << "Max (0,200): " << Max(0,200) << endl;
cout << "Max (100,1010): " << Max(100,1010) << endl;
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
3、带默认参数值的函数
3.1 有默认参数值的形参必须放在最后:
3.2 在相同的作用域内,不允许在用一个函数的多个生命中对同一个参数的默认值重复定义,即使前后定义的值相同也不行:
int add(int x = 5,int y = 6);
//原型声明在前
int main() {
add();
}
int add(int x,int y) {
//此处不能再指定默认值
return x + y;
}
int add(int x/* = 5*/,int y/* = 6*/) {
//只有定义,没有原型声明
return x + y;
}
int main() {
add();
}
4、函数重载
定义:两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的
类型及个数的最佳匹配,自动确定调用哪一个函数。
重载函数的形参必须不同 : 个数不同或类型不同。
当使用具有默认形参值得函数重载形式时,需要注意防止二义性: