#includeusing 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++条款三 有讲到这个问题