#include <iostream>
using namespace std;
class Array
{
public:
Array()
{
}
virtual int operator [] (int i)
{
return i;
}
};
class More_Array :public Array
{
public:
More_Array()
{
}
private:
long data;
};
void PrintArray(Array ay[], int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", ay[i][i]);
}
}
int main(int argc, char* argv[])
{
More_Array temp[5];
PrintArray(temp, 5);
return 0;
}
上面这段代码 就是以多态的方式处理数组, 一般会挂掉。
因为 指针在往前面去加的时候 它并不是加的 子类的sizeof的大小。
在 more effective C++条款三 有讲到这个问题