Mah*_*esh 2 c++ operator-overloading
我无法理解的区别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;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释运算符重载的两种实例之间的基本原理吗?谢谢.
Ebo*_*ike 10
如果Array *obj,obj[i]是等价的*(obj+i),所以它评估为一个Array对象.
你必须这样做
int main()
{
Array* obj = new Array;
for( int i=0; i<10; ++i )
(*obj)[i] = i;
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)