2016-06-21 51 views
2

是否有可能对我来说,建立与抽象方法的类,说行动你可以在C++的抽象类中使用抽象函数吗?

virtual double action (int num1,int num2) const = 0; 

,然后写同一类的成员函数,说EVAL

double eval() const 
    { 
    .. 
    //In here we use function "action" 
    .. 
    } 

因为,一方面该类是抽象的,因此我不能创建它的实例,所以它永远不会执行抽象函数。另一方面,它可能不是?

带这个问题的结局是不会在继承我的类的其他类中写下函数,并且似乎有用的是只编写函数eval而不是另一个不同的动作函数。

回答

4

是的,这是合法的。如果从eval内调用action,它将调用到最终覆盖的动态类型的实际对象eval被调用,它必须是一个具体(非抽象)类型。

+0

非常感谢! :)将尽快接受答案本网站将让我 – Michael

1

是的,你可以做到这一点,这就是所谓的Template Method Pattern。这个名字相当混乱,因为没有涉及到C++的模板。如果子类专门化某些更大计算的某些部分(例如,如您的示例中),那么它会很有用。

+0

不知道为什么downvote,如果这个答案有什么问题,我想知道什么.. – user463035818