设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 368|回复: 2
打印 上一主题 下一主题

一个运算符重载返回类型为引用的疑惑

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 02:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一段运算符[]重载的程序,它的返回值为引用类型,我不明白的是在执行ob[2]=25;时,为什么没有调用运算符的重载??这个引用的返回值除了可以在=号左边被赋值外,它还有什么优点呢??请指教!!


#include<iostream>
using namespace std;
const int size=3;
class atype{
int a[size];
public:
atype(){register int i;
for(i=0;i<size;i++)a[i]=i;
}
int &operator[](int i){return a[i];}

};
int main()

{
atype ob;
cout<<ob[2];
cout<<"";
ob[2]=25;
cout<<ob[2];
return 0;
}
2#
发表于 2009-11-3 02:17:05 | 只看该作者
我不明白的是在执行ob[2]=25;时,为什么没有调用运算符的重载??
调用了重载函数,返回一个引用(另类指针),然后改变指针内容。
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 02:17:06 | 只看该作者
以下是引用yanglinayp在2006-5-23 22:14:00的发言:
这是一段运算符[]重载的程序,它的返回值为引用类型,我不明白的是在执行ob[2]=25;时,为什么没有调用运算符的重载??这个引用的返回值除了可以在=号左边被赋值外,它还有什么优点呢??请指教!!


#include<iostream>
using namespace std;
const int size=3;
class atype{
int a[size]; //这里错了吧
public:
atype(){register int i;
for(i=0;i<size;i++)a[i]=i;
}
int &operator[](int i){return a[i];}

};
int main()

{
atype ob;
cout<<ob[2];
cout<<"";
ob[2]=25;
cout<<ob[2];
return 0;
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 06:14 , Processed in 0.111687 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表