c++学习笔记--引用&

来源:互联网 发布:名器哪款接近真人知乎 编辑:程序博客网 时间:2024/04/29 07:34

引用:引入对象的一个同义词,不会产生新的对象!

例如:

      point p1(m,n);

      point &p2=p1;//p2为p1的同义词,改变p2的同时也会改变p1,但是编译器并没有给p2单独分配内存,他和p1是共用一块内存的!

引用和const一样,必须马上初始化~

例如如下类:

     class point

     {

      public:

             point(int m);//构造函数

      private:

              int x;

              const int y;

              int &z;

     }

point::point(int m)

{

    x=m;

    y=m;//error

    z=m;//error

}

对于类的成员中有引用或者const类型时,必须在初始化列表中进行初始化,而不能在函数体内赋值。

上述构造函数应该这样初始化:

point::point(int m)

 :x(m),y(m),z(m)

{}//OK

引用的应用

       1.传递可变参数

        传统的c中,函数在调用时参数是通过值来传递的,这就是说函数的参数不具备返回值的能力。在c++中,可以通过引用来将变化的参数值传回。

      例如:

         void max(int x,int y,int z)

          {

              z=x+y;

           }

        如果我们的函数声明为void,但是又希望得到z的值,这时我们就可以用引用,这样定义:

        void max(int x,int y ,int &z)

        {

           z=x+y;

        }

这样在main()中可以这样写

         int m;

         max(3,10,m);

  这样z就是m的引用,因为他们共用一块内存,因此z改变的时候m也会改变。

    2.传递较大的对象时,可以使用引用来减少实参向形参传递时复制的麻烦。

    3.引用返回值:

      如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:

  double &max(double &d1,double &d2) 

   {  return d1>d2?d1:d2;  } 

   max()函数返回一个对双精度数的引用,那么我们就可以用max() 来对其中较大的双精度数加1:

  max(x,y)+=1.0;

原创粉丝点击