C++接口的定义用一个实例说明

来源:互联网 发布:java 日志级别 编辑:程序博客网 时间:2024/04/25 06:46

接口是一个没有被实现的特殊的类(纯虚类),它是一系列操作的集合。
C++中没有提供类似Java中Interface这样的关键字来定义接口;
但是Mircrosoft C++中提供了__declspec(novtable)来修饰一个类,来表示该类没有虚函数表,也就是虚函数都是纯虚的。
所以利用它我们依然可以定义一 个接口。如下:

#include "stdafx.h"#include <iostream>using namespace std;#define Interface class __declspec(novtable)Interface Behavior{public:    virtual void Fly();    virtual void Quack();};class BaseDuck: public Behavior{public:    virtual void Fly()  {cout << "BaseDuck Fly..." << endl;};    virtual void Quack(){cout << "BaseDuck Quack..." << endl;};    void Swim()         {cout << "Duck Swim...\n" << endl;}};class RedHeadDuck: public BaseDuck{public:    virtual void Fly()  {cout << "RedHeadDuck Fly..." << endl;};    virtual void Quack(){cout << "RedHeadDuck Quack..." << endl;};};int main(){    BaseDuck* pDuck = new BaseDuck();    pDuck->Fly();    pDuck->Quack();    pDuck->Swim();    delete pDuck;    RedHeadDuck* pRHDuck = new RedHeadDuck();    pRHDuck->Fly();    pRHDuck->Quack();    pRHDuck->Swim();    delete pRHDuck;    return 0;}

上面的Behavior接口等价于下面的定义:

class Behavior{public:    virtual void Fly() = 0;    virtual void Quack() = 0;};
0 0
原创粉丝点击