C++里的抽象接口类。对纯虚函数的一些理解与运用。
以前在写java程序时曾经看到张孝祥讲解的java里的interface接口类的运用,现在把它用C++的纯虚函数来实现。纯虚函数无非就是提供一个接口给大家用(如果还有其他功用请告知笔者,一起学习)。
场景:
主板生产厂商提供了PCI插槽,据我们目前所知的PCI插槽里可以插如声卡,显卡,电视卡,等等。为什么同样的接口可以按照不同的方式工作呢?你肯定没有认真想过这个问题,因为声卡显卡厂商遵从了主板厂商的PCI接口规范。我们用C++语言来表现这里边的关系。从而窥探纯虚函数的用法。
1.主板厂商提供一个PCI插槽的接口规范
class PCI
{
public:
virtual void StartPlay()=0;//由各厂商去实现
virtual void StopPlay()=0; //由各厂商去实现
};
|
2.声卡厂商遵从PCI接口规范(继承PCI)
class SoundMax : public PCI
{
virtual void StartPlay()
{
cout << "This is start SoundMax" << endl;
}
virtual void StopPlay()
{
cout << "now close the SoundMax" << endl;
}
};
|
3.显卡厂商遵从PCI接口规范(继承PCI)
class ATI : public PCI
{
virtual void StartPlay()
{
cout << "This is ati work" << endl;
}
virtual void StopPlay()
{
cout << "now close ati work" << endl;
}
};
|
4.主板厂商提供一个遵从PCI规范的进来的接口
class MainBoard
{
public:
MainBoard()
{
}
~MainBoard()
{
}
void add(PCI *pci)
{
pci->StartPlay();
pci->StopPlay();
}
};
5.组装工人来了
#include
using namespace std;
int main() { MainBoard *mb = new MainBoard(); //拿一块主板 ATI *ati = new ATI(); //拿一块显卡 SoundMax *sm = new SoundMax(); //拿一块声卡 mb->add(ati); //把显卡加到主板上,工作了 mb->add(sm); //把声卡加到主板上,工作了 getchar(); }
|
阅读(889) | 评论(0) | 转发(0) |