| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 742 人关注过本帖
标题:一个运算符重载返回类型为引用的疑惑
只看楼主 加入收藏
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
 问题点数:0 回复次数:2 
一个运算符重载返回类型为引用的疑惑
这是一段运算符[]重载的程序,它的返回值为引用类型,我不明白的是在执行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;
}

[此贴子已经被作者于2006-5-23 23:12:12编辑过]

搜索更多相关主题的帖子: 运算符 类型 重载 int class 
2006-05-23 22:14
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我不明白的是在执行ob[2]=25;时,为什么没有调用运算符的重载??
调用了重载函数,返回一个引用(另类指针),然后改变指针内容。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-23 22:29
freshman42
Rank: 1
等 级:新手上路
威 望:1
帖 子:94
专家分:0
注 册:2005-12-4
收藏
得分:0 
以下是引用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;
}


2006-05-23 22:58
快速回复:一个运算符重载返回类型为引用的疑惑
数据加载中...
 
   



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

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