设为首页 加入收藏

TOP

"利用const引用避免复制" (一)
2013-02-08 14:33:01 】 浏览:1164
Tags:" 利用 const 引用 避免 复制  

  之前两篇文章里的两个函数如下所示:

  [cpp]

  //重载操作符+

  Vector3 operator+(const Vector3 &a){

  return Vector3(x + a.x,y + a.y,z+a.z);

  }

  //比较两个数,如果相同返回0,如果v1大,返回1,如果v2大,返回-1

  int compare(const int &v1, const int &v2)

  {

  if(v1 < v2) return -1;

  if(v2 < v1) return 1;

  return 0;

  }

  因为之前是用C#Java比较多,就是无法理解这两个函数的参数定义,为什么要加上const和&.其实有时候看到&,*,T等符号就会头大。如果在java中第二个函数我肯定就会这样写:

  [java]

  //比较两个数,如果相同返回0,如果v1大,返回1,如果v2大,返回-1

  int compare( int v1,  int v2)

  {

  if(v1 < v2) return -1;

  if(v2 < v1) return 1;

  return 0;

  }

  先不管上面的东西,再来看一个出现无数次的交换例子:

  [cpp]

  //把形参定义为引用类型

  void swapOne(int& a, int& b)

  {

  int tmp = b;

  b = a;

  a = tmp;

  }

  //使用复制实参,只是改变局部副本,而传递函数的实参没有修改

  void swapTwo(int a,int b)

  {

  int tmp = b;

  b = a;

  a = tmp;

  }

  int main(int argc, char* argv[])

  {

  int a = 1, b = 2;

  printf("before swap,a:%d,b:%d\n",a,b);

  swapOne(a,b);

  printf("after swap,a:%d,b:%d\n",a,b);

  printf("before swap,a:%d,b:%d\n",a,b);

  swapTwo(a,b);

  printf("after swap,a:%d,b:%d\n",a,b);

  return 0;

  }

   

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ 协程与网络编程 下一篇颜色对话框使用实例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目