标签:c++ class 类
函数的定义和声明
一、函数原型的声明原则:
1、如果函数定义在先,调用在后,则调用前可以不必声明;如果调用在先,定义在后,则调用前必须声明。
2、一般将主要的函数放在程序的起始位置声明。
3、函数原型声明规则:
与定义类似,但是声明是一条语句,所以必须以分号结尾。
函数原型中的返回类型、函数名和形参必须与定义该函数时完全一致。
函数的调用
一、函数的调用形式
1、函数调用是一个表达式,函数名连同括号是函数调用运算符。
2、如果函数的返回值为void,说明该函数没有返回值。
3、主函数main()不需要进行原型声明,也不允许任何函数调用它,它只由操作系统调用并返回操作系统。
二、函数参数之间的调用:
1、实参与形参有三种结合方式:
传值调用:调用时,实参仅仅将其值赋给形参,实际上,在函数中对形参值的任何修改都不会影响到实参的值。
eg:对于函数:
void zy(int a,int b)
{
int t;
t=a,a=b,b=t;
}
当x=1,y=2时,调用函数zy(x,y);此时结果:x=1,y=2
传地址调用:调用时,实参是将地址进行赋值,形参的改变实际上是改变的所对应地址的值。这样一来,调用函数之后实参也会随之改变。
eg:对于1中的函数,当x=1,y=2时,调用函数zy(x,y);此时结果则是:x=2,y=1
引用调用:引用调用与传地址调用的结果是一样的,其区别就在于引用调用实际上是为实参取了一个别名,这样对形参的任何操作也就会直接作用于实参。
eg:对于1中的函数,当x=1,y=2时,调用函数zy(x,y);此时结果与传地址调用相同:x=2,y=1
2、嵌套调用:在一个函数中调用其他函数的过程。除了main()外,其他函数都可以互相调用。注意:函数不可以嵌套定义,但可以嵌套调用。
3、递归调用;在一个函数过程中直接或间接的调用函数本身。其中又分为直接调用和间接调用。
内联函数
内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。程序执行过程中调用内联函数不需要入栈出栈,所以效率会提高。
带默认形参值的函数
此类函数为形参预赋了一个默认的值。
特点:
1、在默认形参值的右边不能有未指定的默认值参数,默认形参值必须要从右至左的连续定义。
eg:void F(float a,int b=4,float c=5);
2、默认形参值的说明必须出现在函数调用之前。
3、对于同一作用域不能在定义已经定义了的默认形参。
4、形参默认值可以是初始化表达式、函数调用。
函数重载
同一个函数名可以对应着多个函数的实现。
特点:函数名相同形参的个数和类型却可以不同。
注意:重载函数与带默认形参值的函数 一起使用可能引起二义性。
函数模板
将逻辑功能相同而函数参数和函数值类型不同的多个重载函数用一个函数来描述,大大提高了代码的可重用性和软件的开发效率。
特点:
1、以template关键字来声明模板。
2、参数表存放于<>内
3、class可以作为类型的关键字也可以作为typename的关键字。
4、返回值类型可以是普通类型,也可以是模板参数表中指定的类型。
eg:template<class T>
T sub(T x,T y)
{
return x-y;
}
C++之“函数”
标签:c++ class 类
原文地址:http://blog.csdn.net/zygyl/article/details/43703145