哪种继承更有意义:
class SequentialIterator{
SequentialIterator next();
};
class RandomAccessIterator : public SequentialIterator{
RandomAccessIterator shift( int del );
};
或
class RandomAccessIterator {
RandomAccessIterator shift( int del );
};
class SequentialIterator : public RandomAccessIterator{
SequentialIterator next();
};
如果我说“派生类提供比基类更复杂的功能”(首先这句话甚至在这里有意义),这是更基本的操作: next 或移
编辑:我实际上是在为数字序列设计接口。答案 0 :(得分:1)
我认为你是从错误的方向看这个。在您的第一个代码段中,您基本上有三种方法:
SequentialIterator.next()
RandomAccessIterator.next() // same as SequentialIterator.next()
RandomAccessIterator.shift(int)
在你的第二个方面,你也有三种方法,但它们不是同一种方法:
RandomAccessIterator.shift(int)
SequentialIterator.shift(int) // same as RandomAccessIterator.shift(int)
SequentialIterator.next()
以这种方式看,我认为应该很清楚,只有第一个版本才有意义:RandomAccessIterator
类可以合理地提供next()
方法,但SequentialIterator
类不能合理地提供shift(int)
方法。
(当然,这是假设有一些理由让其中一个从另一个继承而开始。)
答案 1 :(得分:1)
我认为转变更为基础,因为下一步似乎是一种特定的转变。但是认为SequentialIterator是从RandomIterator派生的,反之亦然,这有点奇怪。
我建议从Iterator中派生两者,然后将一些常用功能放入IteratorHelper类中。