我们都知道,派生类是可以继承基类的函数的,但是,如果我们需要用基类的指针指向派生类对象时应该怎么 做呢,这时我们就需要在基类函数名前声明virtual关键字,这样基类指针就可以指向两个不同类的对象实现多态,代码如下:
#include <iostream>
using namespace std;
class A
{
public:
virtual void function1();
};
void A::function1()
{
cout << "I am A function1" << endl;
}
class B :public A
{
public:
void function1();
void function2();
};
void B::function1()
{
cout << "I am B function1" << endl;
}
void B::function2()
{
cout << "I am B function2" << endl;
}
int main()
{
A* p;
A a; B b;
p = &a;
p->function1();
p = &b;
p->function1();
return 0;
}
运行结果如下:这时我们发现,基类的指针既可以调用基类对象的方法又可以调用派生类对象的方法,这样就实现了多态!