引用变量

来源:互联网 发布:oracle在线数据库 编辑:程序博客网 时间:2024/05/16 03:40

引用

引用是已定义的变量的别名。主要通途是用作函数的形参,通过将引用变量用作参数,函数将使用原始数据,而不是其副本。
在声明引用变量的时候,必须将其初始化,而不是像指针那样,先声明,再赋值。

    int rat;    int &rodent;    rodent = rat;//不允许

引用更接近const指针,一旦与某个变量关联起来,就将一直效忠与它。

    int &rodent = rats;    int *const pr = &rats;//引用就是该代码的伪装

将引用用作函数参数

引用经常被用作函数参数,使得函数中的变量成为调用程序中的变量别名。

void swapr(int & a, int & b)    // use references,pass variables{    int temp;    temp = a;       // use a, b for values of variables    a = b;    b = temp;}void swapp(int * p, int * q)    // use pointers, pass address of variables{    int temp;    temp = *p;      // use *p, *q for values of variables    *p = *q;    *q = temp;}void swapv(int a, int b)        // try using values,pass values of variables{    int temp;    temp = a;      // use a, b for values of variables    a = b;    b = temp; }

如果程序员的意图是让函数使用传递给它的信息,而不对这些信息进行修改,同时又想使用引用,则应使用常量引用。
当实参与引用参数不匹配时,以前时利用临时变量的,现在禁止创建临时变量。

将引用用于结构(类)

使用结构引用参数的方式与使用基本变量引用相同,只需在声明结构参数时使用引用运算符&即可。

struct sysop{    char name[26];    char quote[64];    int used;};sysop looper =    {        "Rick \"Fortran\" Looper",        "I'm a goto kind of guy.",        0    };const sysop & use(sysop & sysopref){    cout << sysopref.name << " says:\n";    cout << sysopref.quote << endl;    sysopref.used++;    return sysopref; }

返回引用时最重要的一点是,应避免返回函数终止时不再存在的内存单元引用。最简单的方法是,返回一个作为参数传递给函数的医用。另一种方法是用new来分配新的存储空间。

何时使用引用参数

使用引用参数的主要原因有两个:

  • 程序员能够修改函数中的数据对象
  • 通过传递引用而不是整个数据对象,可以提高程序的运行速度。

对于使用传递的值而不修改的函数。

  • 如果数据对象很小,如内置数据类型或小型结构,则按值传递。
  • 如果数据对象是数组,则使用指针,因为这是唯一的选择,并将指针声明位指向const的指针。
  • 如果数据对象是较大的结构,则使用const指针或const引用,以提高程序的效率。
  • 如果数据对象是类对象,则使用const引用。

对于修改调用函数中的数据的函数。

  • 如果数据对象是内置数据类型,则使用指针。
  • 如果数据对象是数组,则只能使用指针。
  • 如果数据对象是类对象,则使用引用。
0 0
原创粉丝点击