C++ 在抽象类中实现纯虚函数-有什么用处吗?

C++ 在抽象类中实现纯虚函数-有什么用处吗?,c++,abstract-class,virtual-functions,C++,Abstract Class,Virtual Functions,我只是注意到我可以在抽象类本身中实现一个纯虚函数。GCC没有抱怨。这种实现有什么用处吗?有人能用吗 class AbstractClass { virtual void PureVirtualFunction() = 0; }; void AbstractClass::PureVirtualFunction() //Is there any use of this implementation? { cout << "I am inside pure virtual

我只是注意到我可以在抽象类本身中实现一个纯虚函数。GCC没有抱怨。这种实现有什么用处吗?有人能用吗

class AbstractClass
{
    virtual void PureVirtualFunction() = 0;
};

void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
    cout << "I am inside pure virtual function of AbstractClass" << endl;
}

class DerivedClass : public AbstractClass
{
    public:
        void PureVirtualFunction();
};

void DerivedClass::PureVirtualFunction()
{
    cout << "I am inside pure virtual function of DerivedClass" << endl;
}
class抽象类
{
虚空PureVirtualFunction()=0;
};
void AbstractClass::PureVirtualFunction()//此实现有任何用途吗?
{

例如,您可以从
DerivedClass
实现调用它(如果
AbstractClass::PureVirtualFunction
不是私有的):


例如,您可以从
DerivedClass
实现调用它(如果
AbstractClass::PureVirtualFunction
不是私有的):


您可以使用它来提供派生类可以访问的默认实现

一种可能的用法是“亲爱的派生类作者,此虚拟函数非常重要,我想确保您知道如何使用它。我将提供一个默认实现,但您必须显式使用它。”这样做:

class AbstractClass
{
public:
    virtual void PureVirtualFunction() = 0;
};

void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
    cout << "I am inside pure virtual function of AbstractClass" << endl;
}

class DerivedClass : public AbstractClass
{
    public:
        void PureVirtualFunction();
};

void DerivedClass::PureVirtualFunction()
{
    AbstractClass::PureVirtualFunction();
}
class抽象类
{
公众:
虚空PureVirtualFunction()=0;
};
void AbstractClass::PureVirtualFunction()//此实现有任何用途吗?
{

cout您可以使用它来提供派生类可以访问的默认实现

一种可能的用法是“亲爱的派生类作者,此虚拟函数非常重要,我想确保您知道如何使用它。我将提供一个默认实现,但您必须显式使用它。”这样做:

class AbstractClass
{
public:
    virtual void PureVirtualFunction() = 0;
};

void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
    cout << "I am inside pure virtual function of AbstractClass" << endl;
}

class DerivedClass : public AbstractClass
{
    public:
        void PureVirtualFunction();
};

void DerivedClass::PureVirtualFunction()
{
    AbstractClass::PureVirtualFunction();
}
class抽象类
{
公众:
虚空PureVirtualFunction()=0;
};
void AbstractClass::PureVirtualFunction()//此实现有任何用途吗?
{

不能,因为PureVirtualFunction是私有的。@ontherocks谢谢,修复了。这不起作用,因为PureVirtualFunction是私有的。@ontherocks谢谢,修复了。
class AbstractClass
{
public:
    virtual void PureVirtualFunction() = 0;
};

void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
    cout << "I am inside pure virtual function of AbstractClass" << endl;
}

class DerivedClass : public AbstractClass
{
    public:
        void PureVirtualFunction();
};

void DerivedClass::PureVirtualFunction()
{
    AbstractClass::PureVirtualFunction();
}