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 };