这个例子讲述了为什么需要多态
在PC的这个类中,只接收usb类型的指针,如果使用多态,用子类指针接收父类地址,可以很方便地使用.
#include <iostream>
using namespace std;
class Usb
{
public:
virtual void plugin(){}
virtual void work(){}
virtual void stop(){}
};
class UsbDisk:public Usb
{
//public:
//虚函数继承的一个特性是 继承到的都是虚函数 访问权限也一样
//vitual 和 访问权限都可以省略
/*virtual*/ void plugin(){ cout << "UsbDisk plugin" <<endl;}
void work(){ cout << "UsbDisk work" <<endl;}
void stop(){ cout << "UsbDisk stop" <<endl;}
};
class UsbFan:public Usb
{
public:
void plugin(){ cout << "UsbFan plugin" <<endl;}
void work(){ cout << "UsbFan work" <<endl;}
void stop(){ cout << "UsbFan stop" <<endl;}
};
class Computer
{
public:
void use(Usb* pdev)
{
pdev->plugin();
pdev->work();
pdev->stop();
}
};
int main()
{
UsbDisk ud;
UsbFan uf;
Computer cp;
cp.use(&ud); //这里有个自动类型转化 ud转换成Usb *
cp.use(&uf);
}