【发布时间】:2011-02-10 02:42:43
【问题描述】:
在重载数组索引运算符[] 时,我无法理解Array obj; 和Array* obj = new Array; 之间的区别。当我有一个指向对象的指针时,我会在 VS 2010 上收到这些错误消息。
错误 C2679:二进制“=”:未找到采用“int”类型右侧操作数的运算符(或没有可接受的转换)
可能是 'Array &Array::operator =(const Array &)' 尝试匹配参数列表 '(Array, int)'
#include <iostream>
class Array
{
int arr[10] ;
public:
int& operator[]( int index )
{
return arr[index] ;
}
};
int main()
{
//Array* obj = new Array; Error
Array obj; // Correct
for( int i=0; i<10; ++i )
obj[i] = i;
getchar();
return 0;
}
有人可以解释两种运算符重载实例之间的基本原理吗?谢谢。
【问题讨论】: