Nếu bạn muốn gọi một hàm của lớp cơ sở từ lớp dẫn xuất của nó, bạn có thể chỉ cần gọi bên trong hàm bị ghi đè bằng cách đề cập đến tên lớp cơ sở (như Foo :: printStuff () ).
mã ở đây
#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();
}
Một lần nữa, bạn có thể xác định trong thời gian chạy hàm nào sẽ gọi bằng cách sử dụng đối tượng của lớp đó (dẫn xuất hoặc cơ sở). Nhưng điều này đòi hỏi hàm của bạn ở lớp cơ sở phải được đánh dấu là ảo.
mã dưới đây
#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();
}