您的位置:首页 > 编程语言 > C语言/C++

C++引用

2015-07-21 13:51 393 查看
引用:

1)引用的声明一定要初始化

2)定义了a的引用b后,相当于一个变量有两个名字:原变量a和引用变量b   不能再把该引用b作为其他变量的别名

3)声明了引用b,并不是又新定义了一个变量,它只是a的别名,不是一种数据类型,并不存储单元。所以求引用b的地址就是求原变量a的地址。

4)没有数组的引用,因为数组不是单个元素,所以无法给若干元素定义一个别名

引用有什么作用:

1)可用作函数参数

    在c中一般参数使用值传递,大块的数据一般使用指针作为参数,以避免大块数据全部压栈;在c++中引用基本替代了指针的作用

例如:

    void swap(char &x , char &y ){

        int temp = 0;

        temp = x;

        x = y;

        y = temp;

    }

    1.引用作为参数传递给函数时,被调用函数的形参就作为原来主调函数中的实参变量或对象的一个别名,所以对形参变量的操作就是对目标对象的操作

    2.引用作为参数传递给函数时,在内存中并没有产生变量实体的副本,它只是源目标变量的一个别名。

2)常引用

    const int &x = y;其实就是在普通引用定义前面加一个只读标识符const

例如:

    例1:

    char x = 1;

    const char &rx = x;

    rx = 2; //这是错误的

    x = 2; //这是正确的

    例2:

    string f1();

    void f2(string &s);

    f2(f1());      //错误

    f2("hello");    //错误

     因为f1()和 “hello”都会产生一个临时对象,而在c++中,这些临时对象都是const类型,把一个const类型转换为 非const类型,这是非法的。

     因此引用型参数应该在能被声明为const的情况下,尽量声明为const。

    引用型参数应该在能被定义const的情况下,尽量定义为const,这样就可以定义一个变量的只读别名,而不担心变量的值被别名意外的更改。

3)引用作为函数返回值

  数据类型标识符  &函数名(形参数列表){

      函数体;

  }

  1.不能返回局部变量的值。因为局部变量在被调用函数返回后就被销毁了,那么它返回的引用指向的内存已经没有任何意义了。

  2.不能返回函数内部new分配的内存的引用,

  3.可以返回类成员的引用,但最好是const

  理解:  引用就是一个目标变量的别名,对引用的一切操作和对变量的直接操作是一样的,可以理解为常量指针,也就是指针值一经确定就不能再改的特殊指针,并且这种特殊指针没有自己的内存空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++