| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:关于&运算符的一个问题
只看楼主 加入收藏
hank_wh
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-7-14
收藏
 问题点数:0 回复次数:3 
关于&运算符的一个问题
#include<iostream.h>
#include<stdlib.h>
class sometype{
    int a[3];
public:
    sometype(int i,int j,int k){
        a[0]=i;
        a[1]=j;
        a[2]=k;
    };
    int &operator[](int i);
};
         int &sometype::operator[]{
    if(i<0||i>2)
    {
        cout<<"error"<<endl;
        exit(1);
    }
    return a[i];
}
void main(){
    sometype ob(1,2,3);
    cout<<ob[1]<<endl;
    ob[1]=25;
    cout<<endl;
    cout<<ob[1];
    ob[3]=44;
}
上面代码中请问&表什么意思啊?个人认为这个“&”符号可以不加的,请高手指点

[[it] 本帖最后由 hank_wh 于 2008-7-18 21:12 编辑 [/it]]
搜索更多相关主题的帖子: sometype includeclass int 
2008-07-18 21:08
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你觉得可以不加,那你就不加&再编译次试试。
会出现error,大概意思是右值不能赋值之类的。

你代码不完整,有些错误,就不说了,说你问题:
&在这里表示引用,即引用返回,吧&和返回值看在一起,所以返回值是int&
引用就是取地址的意思,意思是返回来的值
return a[i];
是a[i]本身,是一个左值,是可以对那块内存进行修改的。
反之,若没有&单纯的int返回的是a[i]的一个copy,是一个右值,是不能被修改的,退一万步,即使能修改,也不会影响实际的a[i]。

如果你没有左值,右值的概念,建议看书。

Fight  to win  or  die...
2008-07-18 22:37
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
收藏
得分:0 
必须加
函数一般是这样 a=fun(b)
但是 用了&的函数可以这样
fun(a)=b.就把fun()函数的返回值(变量)赋值为b了

[[it] 本帖最后由 病书生 于 2008-7-18 22:41 编辑 [/it]]
2008-07-18 22:39
hank_wh
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-7-14
收藏
得分:0 
回复 2# aipb2007 的帖子
太感谢你了!引用其实可以看作是特殊的指针,如果那个函数不是引用的话返回的是值,而值是不能再被赋值的,太谢谢你了
2008-07-19 14:19
快速回复:关于&运算符的一个问题
数据加载中...
 
   



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

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