如何解决我可以有多个基础班吗?
我的代码中可以有多个基类吗?
我想编码一个多项式,序列,对数计算器(我可能稍后再添加)
所以我想做:
class algebraicExpression //should it be algebraicExpression or arithmeticExpression
{
virtual void gather()=0;
virtual void show()=0;
}
诸如polynomialWx
,polynomialPx
,sequenceAn
,sequenceBn
,sequenceCn
之类的类都将从algebraicExpression
两个函数继承。问题是我应该将addition()
,subtraction()
,multiplication()
和division()
之类的函数放入类algebraicExpression
还是创建:
class operation
并将其放到那里,我知道序列将不会使用其中任何一个,但是polynomials
和logarithms
可能会使用,也许以后我会添加一些也会使用它的新东西。
例如:polynomialPx
可以从基类虚函数和polynomialWx
等int degree
,float coefficients
等属性继承。
因为有人告诉我有关钻石的问题,但我不知道它是否连接。
解决方法
如果所有计算器类都继承同一个基类,那么我只会将所有计算器都使用的函数放在基类中。 algebraicExpression类是抽象的,因为您使其中的所有功能都是纯虚拟的。这很好,因为您不想将类用作独立类,而仅将其用作基础。缺点是,您必须重写所有纯虚函数。在您的情况下,这很糟糕,因为您不希望所有计算器都包含所有功能。 您可以使用称为操作的类来解决此问题,并且仅在需要时才继承。但是要注意的是,操作类的功能只能使用操作类的成员。这意味着,如果您在计算器类中使用操作类的方法,则必须为计算器类编写成员函数,然后调用运算符类的函数。 这些操作(加法,除法...)并不那么复杂。我认为您有点过度设计任务。我只是编写函数并在计算器类中使用它们,但我认为不需要操作类。 钻石问题已在以下网站上解释:https://www.geeksforgeeks.org/multiple-inheritance-in-c/
如果您保持代码简单,则在您的示例中不会发生这种情况。 请注意,我并不聪明,这个答案可能是完全的垃圾。如果您有更好的主意,请不要按照我说的去做,尝试您自己的主意。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。