下标表达式(postfix expression )的重载有关问题

下标表达式(postfix expression )的重载问题
下标表达式(postfix expression )通常用于数组元素的访问。
在MSDN  https://msdn.microsoft.com/EN-US/library/x96cyk9c(v=VS.120,d=hv.2).aspx 中有写到:
如果  a 是指针类型   b 是整数类型,那么下面四个使用方法是等价的:

a[b]
*(a + b)
*(b + a)
b[a]


现在的问题是,如果想自己实现一个数组(或者容器)
第一个运算可以通过重载 operator [] (int) 来实现,剩下三个如何实现呢?
------解决思路----------------------
不能直接实现。

但是应该可以通过一个  operator T* () 的类型转换来实现,如果你的容器可以支持的话。
------解决思路----------------------
你把类的[]重载和数组[]的使用方式弄混了:
任何数组[]的使用方式都是这四种, 不需要重载,就是c++的语法.

一个是类内的数组,需要重载[], 一个是数组本身的用法.

见下面的例子, 我猜你说的是这个意思:

class MyClass
{
public:
MyClass()
{
pArray = new int[2];
}

MyClass(int ip)
{
pArray = new int[2];
pArray[0] = ip;
}

int & operator [] (int iPos)
{
return (*(pArray + iPos));
}

private:
int *pArray;
};

int _tmain(int argc, _TCHAR* argv[])
{
MyClass *oC = new MyClass[2];
oC[1] = 2; // ①
int b = 1;
*(oC + b) = 4; // ②
*(b + oC) = 5; // ③
b[oC] = 3; //  ④
}
------解决思路----------------------
A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价

"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价

//所谓等价,是对编译器来说的。
------解决思路----------------------
跟编译原理有关。