函数是C++语言组成重要部份之一,它可以很好的将相同功能封装好,给个函数名进行调用。函数的表现形式非常多,内容也多,这里讲一些最基础,基本的会了,才可能去更好的运用。
函数定义:
1 |
返回值类型? 函数名(参数列表){函数体} |
返回值类型:可以是基本类型、复合类型、自定义类型,C++中的所有类型都可以,如果没有返回值可以写类型void。
函数名:取个有意义的名字(也可以是指针),但要符合C++中标识符规则
参数列表:C++中的所有类型,可以是值,引用,指针,(没有参数可以不写)
以下编写个求正方形面积代码,来让大家理解函数:
函数输出结果:
1 2 |
<span class="hljs-number">529</span> 请按任意键继续. . . |
以上例子就是一个简单的函数定义和调用的例子。
函数默认参数:
1 2 3 4 5 |
double SquareArea(double w = 0); double SquareArea(double w) { return w*w; } |
如果以上函数定义时加上了默认参数,哪它在调用时有可以写成两种形式:
1 2 |
SquareArea(); //函数计算后面积为0 SquareArea(23); //函数计算后面积529 |
也就是函数定义时如果给了默认参数,哪么在调用时可以给值,或不给值(用函数定义时默认的值),都能正确的调用。
有一点要注意的是,默认值一定要是先右边参数有默认值,写几个正确和错误的函数默认值。
1 2 3 4 |
void f1(int a,int b,int c = 0); //正确 void f1(int a,int b=0,int c = 0); //正确 void f1(int a,int b=0,int c); //错误,C没有默认值,可以改成 void f1(int a,int c,int b=0); //正确 |
函数的重载:
C++允许多个函数具有相同的名字(即不同返回类型,不同参数类型),此特性即重载(overload);
下面写几个重载的函数
1 2 3 4 |
//函数返回类型不一样 int f2(int a,int b,int c = 0); //正确 long f2(int a,int b=0,int c = 0); //正确 double f2(int a,int c,int b=0); //正确 |
1 2 3 4 |
//函数返回类型,参数类型都不一样 int f2(int a,int b,int c = 0); //正确 long f2(long a,long b=0,long c = 0); //正确 double f2(double a,double c,double b=0); //正确 |
将根据实际调用时来判断调用哪个函数。函数重载用来解决函数的名字不够用的问题,比如功能一样,取名就一样,只是类型不一样。
但还有一个更好的方式:函数模板