Если вы хотите вызвать функцию базового класса из ее производного класса, вы можете просто вызвать внутри переопределенной функции с упоминанием имени базового класса (например, Foo :: printStuff () ).
код идет здесь
#include <iostream>
using namespace std;
class Foo
{
public:
int x;
virtual void printStuff()
{
cout<<"Base Foo printStuff called"<<endl;
}
};
class Bar : public Foo
{
public:
int y;
void printStuff()
{
cout<<"derived Bar printStuff called"<<endl;
Foo::printStuff();/////also called the base class method
}
};
int main()
{
Bar *b=new Bar;
b->printStuff();
}
Опять же, вы можете определить во время выполнения, какую функцию вызывать, используя объект этого класса (производный или базовый). Но для этого необходимо, чтобы ваша функция в базовом классе была помечена как виртуальная.
код ниже
#include <iostream>
using namespace std;
class Foo
{
public:
int x;
virtual void printStuff()
{
cout<<"Base Foo printStuff called"<<endl;
}
};
class Bar : public Foo
{
public:
int y;
void printStuff()
{
cout<<"derived Bar printStuff called"<<endl;
}
};
int main()
{
Foo *foo=new Foo;
foo->printStuff();/////this call the base function
foo=new Bar;
foo->printStuff();
}