笔者在之前的文章中多多少少的提到过函数(方法),在此,笔者想对函数做一点总结。
函数是什么?
函数是将一组完成某一特定功能的语句,封装起来,作为一个零件。通常对于一个大问题,常常采用一种从上到下的分解方法,就是把一个大问题分解成若干个小问题,然后将每一个小问题分别写好,此时每一个解决小问题的程序就是一个函数。main函数则是解决整个问题的程序,也是程序的入口。
函数的声明与定义:
声明与定义一个函数的时候,要说明函数名,函数的返回值类型(类的构造函数与析构函数没有返回类型),函数的形式参数。按照习惯,声明会在main函数之前,而函数具体是如何实现的,就放在main函数的后面,这样代码可读性更好。
类型名 函数名 (形式参数列表); 这是函数的声明格式。
类型名 函数名 (形式参数列表)
{
变量定义部分;
具体语句部分;
} 这是函数的定义格式。
当函数的返回值类型不是void的时候,函数必须把一个值返回给调用它的环境,这里就需要关键词return。
例如:
int 函数名 (形式参数列表)
{
int i = 0;
具体语句部分;
return i;
}
如果一个函数运行后,需要返回一组不同类型的数据,那么就需要使用指针或引用,这一点以后还会提到。
函数的调用:
函数的调用,也就是执行某一个函数,它的形式如下所示(此时被调用的函数的返回值类型是void):
函数名(实际参数);
而如果返回值类型不是void,调用形式如下(以返回值类型为int作为例子):
int i = 0;
i = 函数名 (实际参数列表);
此时被调用的函数运行完后,会返回一个int型的数据给调用它的环境,也就是返回给上面的变量i。
关于形式参数:
形式参数指明了输入的实际参数要是什么类型的数据。而程序常常会用一些固定的实际参数来调用它。C++允许函数在定义或生命的时候,给某一个或某几个参数指定默认值。例如:
void print (int value, int base = 10);
调用的时候: print(20); 这个时候value = 20,base = 10。
而如果是 print(20, 5); 这个时候value = 20,base = 5。
注意,一旦某一个参数指定了默认值,那么这个参数后面的所有参数都要有默认值。以上面的print函数为例:
void print (int value, int base = 10, int parameter = 20);
而且,在函数声明的时候要指定默认值,因为编译器是根据函数原型的声明确定函数调用是否合法,函数定义的时候指定默认值是没有意义的,除非定义与声明放在一起。
内联函数:
inline print(int value, int base = 10);
这个print函数就是一个内联函数,它有函数的外表但是没有调用的开销,也就是说,在编译的时候,内联函数里面的代码相当于复制粘贴到调用这个内联函数的地方去。因此,内联函数应该比较短小。而且,内联函数必须定义在被调用之前,否则编译器不知道应该在调用位置插入什么代码。
以上是对函数的一点总结,以后应该还会再添补一些内容。如果有表达不当的地方,还请指明更正,谢谢!