C++函数(一)

来源:互联网 发布:淘宝c店 编辑:程序博客网 时间:2024/06/06 03:40

函数:


  • 定义函数:
Type Name (argument1,2...){    //statement;}

  1. 参数按数值传递和按地址传递(value and reference):

当调用带参函数时,按数值传递(by value),传递到函数里的是赋给变量的值,而不是变量本事
例如:
int a = 4 , b = 4 , c;
c = function ( a , b );

function函数被调用时,其变量a,b值为5和3,但在函数function内对变量a 或b 所做的任何修改不会影响变量他外面的变量a和 b 的值,因为变量a 和b并没有把它们自己传递给函数,而只是传递了他们的数值。


  • 按地址传递(by reference):

当需要函数控制函数以外的变量时,可以使用按地址传递来实现这种操作。

void duplicate (int& a, int& b, int& c){a*=2;b*=2;c*=2;}int main (){int x=1, y=3, z=7;duplicate (x, y, z);cout << "x=" << x << ", y=" << y << ", z=" << z;return 0;}
  • 按值传递变量的定义
Type name (int& a,double& b,...)//变量的类型后面跟了一个地址符ampersand sign (&),它的作用是指明变量是按地址传递的(by reference)

Inline 函数(inline functions):

inline 指令可以被放在函数声明之前,要求该函数必须在被调用的地方以代码形式被编译。这相当于一个宏定义(macro)。它的好处只对短小的函数有效,这种情况下因为避免了调用函数的一些常规操作的时间(overhead),如参数堆栈操作的时间,所以编译结果的运行代码会更快一些。

声明:

inline type name ( arguments ... ) {     statement;  }

它的调用和其他的函数调用一样。调用函数的时候并不需要写关键字inline ,只有在函数声明前需要写。


函数重载(function overloading):

用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的重载。即对一个函数名重新赋予它新的含义,使一个函数名可以多用。


函数模板(function template):

建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。

0 0