标题:一个运算符重载返回类型为引用的疑惑
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-66624-1-1.html




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

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