GameObject *pgo = new SpaceShip;
Asteroid *pa = new Asteroid;
pgo = pa;
GameObject& rgo = *pa;
假设GameObject是基类,SpaceShip和Asteroid与GameOject有公共继承。我理解前两行。我不明白第3行。为什么你可以设置相同的地址,即使是继承的,它们是不同的类?然后我想我不完全理解第1行。另外,我不确定第4行是做什么的。
答案 0 :(得分:1)
如果GameObject
是Asteroid
& SpaceShip
实现,GameObject*
类型的变量可以指向这两种类型。
第4行使用“By Reference”变量声明将指针类型变量“转换”为非指针。
答案 1 :(得分:1)
你应该阅读C ++的继承和多态。基本上,第三行有效,因为Asteroid
一个GameObject
,因此您可以使用GameObject
访问Asteroid
相关成员GameObject *
指针。
在某些情况下,您可能需要使用GameObjects,以及需要使用Asteroids的其他一些情况。在任何一种情况下,只要指针类型在继承层次结构中,就会使用适当的指针。
最后一行只是对指针pa
指向的对象的引用。