静态多态:void Bottle(CWater* p == new CBeer)
{
p->Show();
}
父类指针指向子类对象,缺点,只能指向父类成员。不能实现多态。
要解决这个问题,只要在父类里面加上virtual 就能解决。
虚函数完成了 通过父类的指针 调用子类的函数
#include <iostream>
using namespace std;
class CWater
{
public:
virtual void Show() // 虚函数完成了 通过父类的指针 调用子类的函数
{
cout << "CWater::Show" << endl;
}
};
class CBeer : public CWater
{
public:
void Show()
{
cout << "CBeer::Show" << endl;
}
};
class CMilk : public CWater
{
public:
void Show()
{
cout << "CMilk::Show" << endl;
}
};
class CCoffee : public CWater
{
public:
void Show()
{
cout << "CCoffee::Show" << endl;
}
};
class CCoco :public CWater
{
public:
void Show()
{
cout << "CCoco::Show" << endl;
}
};
void Bottle(CWater* p)
{
p->Show();
}
int main()
{
CBeer* beer = new CBeer;
CMilk* milk = new CMilk;
CCoffee* coffee = new CCoffee;
CCoco* coco = new CCoco;
Bottle(beer);
Bottle(milk);
Bottle(coffee);
Bottle(coco);
system("pause");
return 0;
}