ถ้าคุณต้องการเรียกใช้ฟังก์ชันคลาสพื้นฐานจากคลาสที่ได้รับคุณสามารถโทรภายในฟังก์ชันแทนที่ด้วยชื่อคลาสพื้นฐาน (เช่น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();
}
อีกครั้งคุณสามารถกำหนดที่ runtime ซึ่งฟังก์ชั่นการโทรโดยใช้วัตถุของคลาสนั้น (ที่ได้รับหรือฐาน) แต่สิ่งนี้ต้องการฟังก์ชันของคุณที่คลาสฐานจะต้องทำเครื่องหมายเป็นเสมือน
รหัสด้านล่าง
#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();
}