绝对不要以多态方式处理数组。假设有一个双层继承体系class D : public B。另有一个接受B类型数组的函数,函数中依次对数组元素进行处理。如果以一个D类型的数组作为实参传进去可以吗?编译是没问题,数组做参数时与指针一样的(实际上数组和指针有很多不同之处,具体可以见《C专家编程》),表示一个地址嘛。但是运行起来的时候就会出问题,因为指针的类型决定了对待指针指向的内存上的数据的方式,比如double型指针会以8字节为单位对待指针指向的数据,而int型的指针是以4字节为单位。那么同样对于D和B往往会出现他们大小不一样,大小一样,对待他们指向的内存的解决方式就不一样,这就会出错,别忘了可能出错的地方就一定会出错。这里传参是没有问题的,但是函数在运行时会以B类型的方式对待传进来的那个数组名,因而带来了危险。那么多态真的不可以用在数组上吗?我认为可以,使用一个指针数组,而不要直接使用一个对象(class的实例)数组就可以了。本条款我想主要是针对对象数组的。