游戏对象和放大器; rgo = * pa;

时间:2015-07-12 22:29:30

标签: c++

GameObject *pgo = new SpaceShip;
Asteroid *pa = new Asteroid;
pgo = pa;
GameObject& rgo = *pa;

假设GameObject是基类,SpaceShip和Asteroid与GameOject有公共继承。我理解前两行。我不明白第3行。为什么你可以设置相同的地址,即使是继承的,它们是不同的类?然后我想我不完全理解第1行。另外,我不确定第4行是做什么的。

2 个答案:

答案 0 :(得分:1)

如果GameObjectAsteroid& SpaceShip实现,GameObject*类型的变量可以指向这两种类型。

第4行使用“By Reference”变量声明将指针类型变量“转换”为非指针。

答案 1 :(得分:1)

你应该阅读C ++的继承和多态。基本上,第三行有效,因为Asteroid 一个GameObject,因此您可以使用GameObject访问Asteroid相关成员GameObject *指针。

在某些情况下,您可能需要使用GameObjects,以及需要使用Asteroids的其他一些情况。在任何一种情况下,只要指针类型在继承层次结构中,就会使用适当的指针。

最后一行只是对指针pa指向的对象的引用。