以多态的方式处理数组 产生的问题 实例代码

2014-11-24 03:24:25 · 作者: · 浏览: 0
#include 
  
   
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++条款三 有讲到这个问题