<分区>
下面我将进入正题并进行解释。
如果有的话,...的好处是什么
template<class T>
class myStack : public myList<T>...// my stack
结束
template<class T, Container = deque<T> >
class stack...// C++ stack
最近我在编写一些代码时遇到了一个继承问题,在这个问题中我暴露了基类的一些我不想暴露的方面。具体的例子并不重要,所以我会把它与几个学期前联系起来,当时我参加了一个数据结构类(class),我们在类(class)中实现了自己的列表、堆栈、队列等。
在这个类中,我们要设计一个从列表继承的堆栈。这样做的问题是我公开了可能会破坏堆栈完整性的基础的公共(public)方法。可能是因为我有点纯粹主义者,但是让 insert()
和 remove()
散落在堆栈中对我来说很麻烦。当时我没有时间去研究它,但这次我想我会引用 C++ 标准,看看那里是如何定义 stack
的。瞧,我找到了上面的代码;这是一个明显的解决方案,但我忽略了。
这是我的观点......
C++ 实现“更好”,因为它允许用户根据需要自由选择底层结构,并维护一个更纯粹的堆栈,因为它清楚地表明只有堆栈功能对用户可用,并且可以更好地防止意外损坏.设计选择背后是否有更实质性的、非主观的推理,或者继承了其中的缺陷?
我的明显好处是代码重用,这与类(class)相同,我不认为这是额外的好处,因为我个人认为 C++ 实现的自由带来的好处。不过,我确实将基类的过度曝光(我的话)视为一个骗局。设计选择背后是否有更实质性的、非主观的推理,或者继承了其中的缺陷?
同样,我不关心语言,我更关心权衡我自己设计的利弊。