CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

关于引用指针参数的问题

楼主perfervid(我是2006年度最好的楼主吗?)2006-12-03 08:14:25 在 C/C++ / C++ 语言 提问

为什么   test(&i,   &i);   会错?谢谢!  
   
  void   test(int*&   i,   int*&   j)  
  {  
      i   =   j;  
  }  
   
  int   main()  
  {  
      int   i   =   0;  
      int*   j   =   &i;  
      test(j,   j);//test(&i,   &i);  
      return   0;  
  } 问题点数:100、回复次数:9Top

1 楼studying(学到老)回复于 2006-12-03 09:32:29 得分 50

因为使用test(&i,   &i)的时候,编译器会生成一个临时的int*指针变量。如果将临时对象传递给采用指向对象的引用作为参数的函数,则该引用必须是常数引用。  
  如果要采用test(&i,   &i)的话,那么应该将test函数写成这样:  
  void   test(int*   const   &   i,   int*   const   &   j)  
  {  
      //因为使用了cosnt,所以这条语句编译通不过  
      //i   =   j;  
  }Top

2 楼gabby1985(咖啡)回复于 2006-12-03 10:00:44 得分 5

恩……   LS   MS有道理Top

3 楼wanphonguo()回复于 2006-12-03 10:13:05 得分 0

没看明白,学习中...Top

4 楼jixingzhong(瞌睡虫·星辰)回复于 2006-12-03 10:25:56 得分 20

因为   临时对象   是无法修改的   ...  
   
  如果是   test(&i,   &i),  
  则函数应该是:  
  void   test(int*   const   &   i,   int*   const   &   j)Top

5 楼abblly(西边日出东边雨)回复于 2006-12-03 11:29:34 得分 5

临时对象还真是个麻烦的东东Top

6 楼OOPhaisky(异化$渴望成功~~)回复于 2006-12-03 12:15:33 得分 10

void   test(int*&   i,   int*&   j);  
  int   main()  
  {  
      int   i   =   0;  
      int*   j   =   &i;  
      test(j,   j);//test(&i,   &i);  
      return   0;  
  }  
  ---------------------------------------------------------------------------------  
  注意看你的test函数的参数类型,他们是引用类型(而且是non   const引用),只不过他们引用的是指针而已。  
  而non   const引用是不能够绑定到临时对象上的,而&i本身就是一个临时的指针对象,所以不可以的。Top

7 楼OOPhaisky(异化$渴望成功~~)回复于 2006-12-03 12:17:44 得分 10

如果楼主将test的参数改成const引用就可以test(&i,&i)这样调用了:  
  void   test(int*const&   i,   int*cosnt&   j);//注意const   的位置  
  Top

8 楼htqx(航天奇侠)回复于 2006-12-03 12:43:15 得分 0

 
   
  test(   int   *   i   ...)  
  Top

9 楼perfervid(我是2006年度最好的楼主吗?)回复于 2006-12-04 04:07:58 得分 0

多谢各位啊!Top

相关问题

关键词

得分解答快速导航

  • 帖主:perfervid
  • studying
  • gabby1985
  • jixingzhong
  • abblly
  • OOPhaisky
  • OOPhaisky

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo