在函数未被调用时,函数的形参并不占有实际的内存空间,也没有实际的值。只有在函数被调用时才为形参分配储存单元,并将是实参与形参结合。
1、值调用
值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参,这一过程是单向传递过程,一旦形参获得了值便于实参脱离关系,此后无论形参发生了怎样的改变,都不会影响实参。
2、引用调用
引用调用是一种特殊类型的变量,可被认为是另一个变量的别名。通过引用名与通过被引用的变量名访问变量的效果是一样的。例如:int &ri = i;
但是引用需注意:
a、声明一个引用时,必须同时对他进行初始化,使它指向一个已存在的对象。
b、一旦引用被初始化后,就不能改向其他对象。
当引用作为形参时,调用函数时,形实结合,这样对形参的任何操作也就会直接作用与实参。
3、内联函数
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在内一个调用处,需注意:
a、内联函数体内一般不能有循环语句和switch语句
b、内联函数的定义必须出现在第一次调用之前
c、对内联函数不能进行异常接口声明
4、带默认形参值的函数
a、默认形参值必须按从右到左的顺序声明
b、在相同作用域内,默认形参值的说明应保持唯一,但如果不同的作用域内,允许说明不同的默认形参
5、函数重载
函数按其不同的形参列表进行重载
6、构造函数与析构函数
构造函数:在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态。函数名与类名相同,没有返回值,在对象被创建时被自动调用。
析构函数:用来完成对象被删除前的一些清理工作,在对象的生存期即将结束的时刻被自动调用的,名称由类名前加“~”构成,没有返回值且不接受任何参数,但可以是虚函数。若不进行显式的说明,系统也同样会生成一个不做任何事的默认析构函数
7、拷贝构造函数
生成一个对象的副本有两种途径,第一是建立一个新对象,然后将一个已有对象的数据成员值取出来,一一赋给新的对象。第二是采用拷贝构造函数。
第一种虽可行,但繁琐;因而我们可以采用第二种方法
拷贝构造函数:是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象引用,作用是使用一个已经存在的对象(由拷贝构造函数参数指定),去初始化同类的一个新对象。
若没有定义类的拷贝构造函数,系统会在必要时自动生成一个默认的拷贝构造函数,这个默认的拷贝构造函数的功能是,把初始值对象的每一个数据成员的值都复制到新建立的对象中。
声明拷贝构造函数:类名 (类名 &对象名);其调用时机有三种情况:
a、当用类的一个对象去初始化该类的另一个对象时,如point B(A);b、如果函数的形参是类的对象,调用函数时,调用函数时,进行形参和实参的结合时。
c、如果函数的返回值是类的对象,函数执行完毕返回调用者时