(一)指针调用
#include <iostream>
using namespace std;
class B {
public:
virtual void m() { cout << " B::m" << endl; }
};
class D: public B {
public:
virtual void m() { cout << " D::m" << endl; }
};
int main()
{
B* p;
//虚拟函数的指针调用
p=new B; p->m();
p=new D; p->m();
}
运行结果:
(二)引用调用
#include <iostream>
using namespace std;
class Animal {
public:
virtual void voice() { cout << "voice of animal" << endl; }
};
class Cat : public Animal {
public:
void voice() { cout << "voice of cat" << endl; }
};
class Dog : public Animal {
public:
void voice() { cout << "voice of dog" << endl; }
};
//虚拟函数的引用调用
void listen(Animal &p) {
p.voice();
}