
为什么C++中,虚函数也能算为多态性的一种?到底什么多态性的是什么?
以下小程序说明了多态性
#include "stdafx.h"
#include<iostream>
using namespace std;
class Base
{
public:
virtual void vf() //只有虚函数、纯虚函数才有多态性
{
cout << "调用了基类函数 vf() 。" << endl;
}
};
class A : public Base
{
public:
void vf()
{
cout << "调用了子类 A 函数 vf() 。" << endl;
}
};
class B : public Base
{
public:
void vf()
{
cout << "调用了子类 B 函数 vf() 。" << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Base *p, bs;
A a;
B b;
p = &bs; //基类指针指向基类对象
p->vf(); //调用的是基类函数 vf()
p = static_cast<Base*>(&a);//基类指针指向类 A 对象
p->vf();//调用的是类 A 函数 vf()
p = static_cast<Base*>(&b);//基类指针指向类 B 对象
p->vf();//调用的是类 B 函数 vf()
//这就是多态性
system("pause");
return 0;
}
运行结果:
让你彻底了解C++虚函数与多态的关系,更重要的是,这篇文档不仅告诉你虚函数与多态是什么!而且告诉你为什么需要虚函数与多态