我最近在使用快速枚举时注意到了一些意外行为。事后看来,我可能期望快速枚举能做的比预期的要多,所以我正在寻找一些关于它实际上是如何工作的澄清。
假设我有一个父类Shape,它有 2 个子类3SidedShape和4SidedShape。我有一个名为myShapes的数组,其中包含来自 3 面和 4 面类的对象。
如果我想搜索数组myShapes,但我只关心 3 个边的形状,我正在做的是:
for (3SidedShape *shape in myShapes)
我的想法是我只会迭代3SidedShape类的对象,但事实并非如此?我想无论他们喜欢与否,我都将所有对象都转换为3SidedShape 。我晚上将对象作为完全不同的课程归还。诚然,我没有调用两个类都没有的任何方法,但我没想到类兄弟姐妹会如此轻松地重新转换?我只是在这里走运,还是你真的可以列举任何你喜欢的班级,不管关系如何?谁能解释枚举期间实际发生的情况?