C++允许子类的成员函数重载基类的成员函数,即子类与基类有相同名称的成员函数,而一个对象调用成员函数时,两个重载的函数都在它自己可使用范围内。C++的继承机制中用一种称为多态性的技术来解决调用哪一个成员函数的问题。这种在运行时,能依据其类型确认调用哪个函数的能力,称为多态性,或称迟后联编,也有的译为滞后联编。
多态如何工作:虚函数为了指明某个成员函数具有多态性,用关键字virtual来标志其为虚函数。
例如:
class Member {
protected:
int num;
int point;
string name;
public:
Member(int nnum, int ppoint, string name1)
{
num = nnum;
point = ppoint;
name = name1;
}
virtual void add(int money)
{
point += money;
}
virtual void exchange(int ppoint)
{
ppoint = ppoint / 100;
point -= ppoint * 100;
}
class VIP :public Member
{
protected:
int p1, p2;
public:
VIP(int num, int point, string name, int pp1, int pp2) : Member(num, point, name)
{
p1 = pp1;
p2 = pp2;
};
virtual void add(int money)
{
point += money * p1;
}
virtual void exchange(int ppoint)
{
ppoint = ppoint / p2;
point -= ppoint * p2;
}
add和exchange这两个成员函数在声明时加了关键字—virtual,其拥有多态性。
虚函数的限制1.只有类的成员函数才能说明为虚函数
2.静态成员函数不能是虚函数
3.内联函数不能是虚函数
4.构造函数不能是虚函数
5.析构函数可以是虚函数,而且通常声明为虚函数
纯虚函数所谓纯虚函数是指被注明为不具体实现的虚成员函数。往往设置在基类,通常其表现形式为:
virtual 返回值 函数名称(变量)= 0;
"=0"表明程序员将不定义该函数。该声明是为派生类保留位置。由派生类进行具体的重载。



