| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1070 人关注过本帖
标题:引用&,这个符号到底代表什么?
只看楼主 加入收藏
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
 问题点数:0 回复次数:8 
引用&,这个符号到底代表什么?
搞不懂了,到底是代表执行什么。
#include<iostream>
using namespace std;
class A
{
public:
A(int i);
void print();
const int &r;
private:
const int a;
static const int b;
};
const int A::b=10;
A::A(int i):a(i),r(a)
{
}
void A::print()
{
cout<<a<<":"<<b<<":"<<r<<endl;
}
int main()
{
A a1(100),a2(0);
a1.print();
a2.print();
}
红色这一句,删掉&
输出的就不知道r是怎么一回事了,可是我不知道这个删掉&后的程序,怎么就不对呢?
搜索更多相关主题的帖子: 符号 代表 
2007-06-30 21:48
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 

没有&的话, 分配给r一个具体内存空间, 因为在后面没有初始化, 所以输出不可预料
有&的话, 没有给r内存空间, 只是一个符号地址, 所以它指向它下面一个实际对象的内存空间(这里就是a)
即, 有&的话, 此时r的地址和a的地址是一样的, r就是a..
所以输出你应该看到r=a...


女侠,约吗?
2007-06-30 22:10
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
野比解释的太深了,给你解释下浅点的:
在语法上&有两种,一是取地址,一是引用。
这里是后者。
因为在类定义的时候,r先于a,所以在构造对象时,尽管是:a(i),r(a) ,但是实际上是:r(a),a(i)。
所以如果不用引用&,那么在r(a)时,a是未定义的,就出现了未定义的值,结果不对。
如果用引用&,那么根据引用的定义,const int &r = a,实际上r就是a的别名,他们是同一个对象,站用相同内存。
然后a(i),定义const a = i,这个操作同时定义了r。
如果你把类定义中r和a的顺序换下,那么有没引用都一样的结果。
比如:
#include <iostream>
using namespace std;

class A
{
public:
A(int i);
void print();

private:
const int a;
const int r;
static const int b;
};
const int A::b=10;
A::A(int i):a(i),r(a)
{
}
void A::print()
{
cout<<a<<":"<<b<<":"<<r<<endl;
}
int main()
{
A a1(100),a2(0);
a1.print();
a2.print();
}

Fight  to win  or  die...
2007-06-30 22:30
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
我觉得我的解释挺形象的来着...

女侠,约吗?
2007-06-30 22:33
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
看篇幅也是我的形象啊!

哈哈~~~~~~~~
开玩笑。

Fight  to win  or  die...
2007-06-30 22:38
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 


简单一句, 引用就是EQU伪操作(在这里)和OFFSET伪操作(通常情况)...
等学微机原理就明白了...


女侠,约吗?
2007-06-30 23:27
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
得分:0 
啊,两位大虾解释得都很形象啊,我明白了,好好开心,好好激动,真是佩服得五体投地阿~~~~~~~~~

二位的加起来真是perfect阿!
微机原理?my god!
也许学不着了。。。。。。

好人哪,一群好人哪!!!!!!
2007-07-01 00:16
duffebear
Rank: 1
等 级:新手上路
威 望:2
帖 子:172
专家分:0
注 册:2007-1-30
收藏
得分:0 
好帖就要顶

死后定当长眠 生前何须久睡
2007-07-02 13:01
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
得分:0 
别顶了
显得我好菜~

好人哪,一群好人哪!!!!!!
2007-07-02 22:07
快速回复:引用&,这个符号到底代表什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014582 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved