Search code examples
c#c++polymorphismvirtualabstract

How can I create an abstract base class in C++?


How would I go about doing the following in C++ (the following code is C#):

class Base
{
    public virtual void Foo()
    {
        // do stuff...
    }
}

class C : Base
{
    public override void Foo()
    {
        base.Foo(); // <=== how do you do this line?
    }
}

Solution

  • Use operator :::

    class Base
    {
    public:
        virtual ~Base() {}
        virtual void Foo()
        {
            // do stuff
        }
    };
    
    class C : public Base
    {
    public:
        void Foo()
        {
            Base::Foo();
        }
    };
    

    To have an abstract class in C++ at least one method needs to be pure virtual:

    class Base
    {
    public:
        virtual ~Base() {}
        virtual void Foo() {}
        virtual void another_function() = 0; // Pure virtual function.
    };