在c ++中使用纯虚函数的主体有什么用?

时间:2012-05-28 17:49:35

标签: c++

除了可以从派生类重写方法调用它之外,纯虚函数似乎无法在任何地方调用!那么,它的使用是什么?例如

class base
{
    public:
    virtual void fun()=0
    {
        cout<<"I have been called from derived class"<<endl;
    }
};
class derived:public base
{
    public:
    void fun()
    {
        cout<<"I am the derived class"<<endl;
        base::fun();

    }
};
void main()
{
    derived d;
    d.fun();
}

4 个答案:

答案 0 :(得分:5)

它以您在问题中提到的确切方式使用,有一些通用逻辑可以被派生类重用,但同时您希望强制派生类提供非共同部分的实现。

答案 1 :(得分:2)

它强制派生类实现它,同时仍然为派生实现提供一个不需要从派生类以外的任何地方调用的常见行为。

答案 2 :(得分:1)

virtual方法的作用是完全abstract方法,类似于其他语言,例如Java和C#。仅使用纯class方法填充的C ++ virtual代表其他语言的interface

给他们一个身体是对这种理想的滥用,并且它违背了目的。如果基础class想要仅为其子项提供功能,那么它应该通过protected非纯virtual方法执行此操作(如果它仍然可以是virtual有道理)。

答案 3 :(得分:0)

此问题可能与C++ pure virtual function have body重复 我已经看到这主要用于纯虚拟析构函数(需要实现)。 可以在此处找到解释纯虚拟析构函数之外的案例的另一个好答案:(Im)pure Virtual Functions