由于继承导致对象的指针和引用具有两种不同的类型:静态类型和动态类型。
静态类型:指针或者是引用声明时的类型。
动态类型:由实际指向的类型确定。
GameObject *pgo = new SpaceShip // pgo 静态类型是 GameObject*, 动态类型是 SpaceShip*
Asterioid *pa = new Asterioid; // pa 的静态类型是 Asterioid *, 动态类型也是 Asterioid *
pgo = pa; // pgo 静态类型总指向 GameObject *, 动态类型指向 Asterioid *
GameObject &rgo = *pa; // rgo 的静态类型是 GameObject, 动态类型是 Asterioid