none
一段C++代码,把我给难住了 RRS feed

  • 问题

  • const Point3d & SetToMin (const Point3d & p2)
      {
      if (p2.x[0] < x[0]) x[0] = p2.x[0];
      if (p2.x[1] < x[1]) x[1] = p2.x[1];
      if (p2.x[2] < x[2]) x[2] = p2.x[2];
      return *this;
      }
    如上面所示,Point3d是一个类名,SetToMin ()为一个函数,在类名与函数名之间有一个地址运算符,这是什么意思呢?还有,在函数的形参中也有一个& ,这个的作用又是什么,是在不懂,请高手指点。
    2012年5月15日 10:28

答案

  •  再回首-诸事已朦胧,你好!

    这是一个返回引用的函数。

    当函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。这样就减少了一次复制。

    而非引用类型返回值的函数,返回的是一个新的临时对象。返回非引用类型不但要多建一个临时对象,还会多出了不少的语句从而多消耗CPU性能。

    希望我的回复对你有所帮助!

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月16日 3:23

全部回复

  •  再回首-诸事已朦胧,你好!

    这是一个返回引用的函数。

    当函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。这样就减少了一次复制。

    而非引用类型返回值的函数,返回的是一个新的临时对象。返回非引用类型不但要多建一个临时对象,还会多出了不少的语句从而多消耗CPU性能。

    希望我的回复对你有所帮助!

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月16日 3:23
  • 谢谢您的热心帮助
    2012年5月18日 6:48