How to call a parent class function from derived class function?

I’ll take the risk of stating the obvious: You call the function, if it’s defined in the base class it’s automatically available in the derived class (unless it’s private).

If there is a function with the same signature in the derived class you can disambiguate it by adding the base class’s name followed by two colons base_class::foo(...). You should note that unlike Java and C#, C++ does not have a keyword for “the base class” (super or base) since C++ supports multiple inheritance which may lead to ambiguity.

class left {
public:
    void foo();
};

class right {
public:
    void foo();
};

class bottom : public left, public right {
public:
    void foo()
    {
        //base::foo();// ambiguous
        left::foo();
        right::foo();

        // and when foo() is not called for 'this':
        bottom b;
        b.left::foo();  // calls b.foo() from 'left'
        b.right::foo();  // call b.foo() from 'right'
    }
};

Incidentally, you can’t derive directly from the same class twice since there will be no way to refer to one of the base classes over the other.

class bottom : public left, public left { // Illegal
};

Leave a Comment