来讨论一下引用吧

fjjfxz 2004-10-10 11:11:33
钱能的书里
说可以对右值进行引用
double& rr=1.1;
相当于
double temp;
temp=double(1.1);
double& rr=temp;

我在VC6及dev-c++中都不行。
再问一下,钱能的成书较早,在新标准(98)中对引用又有什么新的内容?
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-10-11
  • 打赏
  • 举报
回复
应该是如果把数组视为一种结构体变量的话
typedef int Array[10];

Array a;
Array& rArray=a;
不必是const 引用 !

我又试了试!
kob 2004-10-11
  • 打赏
  • 举报
回复
引用的作用相当于指针,用哪个根据个人习惯。
kobefly 2004-10-11
  • 打赏
  • 举报
回复
长见识了
原来引用还可以这样用
ufool 2004-10-11
  • 打赏
  • 举报
回复
总之,占用内存空间的东东,其权力不能因后来者而减少,除非是强制性的。

double& rr=1.1;

rr因为是某一个变量的引用,即rr++应该可以。而1.1是常量,如果上面那句话通过,则rr的权力就小了,不能改变其值了。

还有

const int i=1;
const int * pi = &i; (此时pi是指向常量的指针, 自身可变)

如果将第二句前面的const去掉,则是指向变量的指针,让其指向一个常量,是将其权力缩小,他自然就不干了。



sharkhuang 2004-10-11
  • 打赏
  • 举报
回复
当然不是必须是const但是 1。1是const
yqlws 2004-10-11
  • 打赏
  • 举报
回复
我来提议我的疑惑: 在函数参数表中我们是用指针好呢 还是引用好呢? 有什么区别吗
zhangfjj 2004-10-10
  • 打赏
  • 举报
回复
我还试了一下,是可以对数组引用
#include <iostream>
using namespace std;
typedef int Array[10];
int main()
{
const double& rd=1.1;
int a[10]={1,2,3};
const Array & ra=a;
cout<<rd<<endl<<ra[0]<<endl;
return 0;
}
zhangfjj 2004-10-10
  • 打赏
  • 举报
回复
其实在BS的书中(TC++PL)有介绍
对于T&的引用,必须在声明时用T型的对象(要求是左值的)进行初始化。
不能用右值的。
即必须是一个左值的(有地址的)对象来初始化引用,且要求类型相同。
但有
const T&的引用,此时可以不必是左值的,甚至不必是T类型的。
如:
double& dr=1;//error
const double& cdr=1;//ok
相当于:
double temp=double(1);
const double& cdr=temp;
且,这种保存引用初始式的临时变量一直存在,直至这个引用的作用域结束!

帮你查了一下书!
自己也有了更清楚的认识。
Dong 2004-10-10
  • 打赏
  • 举报
回复
double& rr=1.1;
相当于
double temp;
temp=double(1.1);
double& rr=temp;
------------------------------
错!
double& rr=1.1;
相当于
const double temp=double(1.1);
const double& rr=temp;


你可以看看const double& rr=1.1;
结论是你错误理解了!
zhangfjj 2004-10-10
  • 打赏
  • 举报
回复
坛子里关于引用的讨论比较多,搜索一下吧

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧