新微赢技术网

标题: 一个运算符重载返回类型为引用的疑惑 [打印本页]

作者: [日青](忝)    时间: 2009-11-3 02:17
标题: 一个运算符重载返回类型为引用的疑惑
这是一段运算符[]重载的程序,它的返回值为引用类型,我不明白的是在执行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;
}
作者: liu    时间: 2009-11-3 02:17
我不明白的是在执行ob[2]=25;时,为什么没有调用运算符的重载??
调用了重载函数,返回一个引用(另类指针),然后改变指针内容。
作者: ★真的爱你★    时间: 2009-11-3 02:17
以下是引用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;
}




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2