C++接口的定义用一个实例说明 [转]
生活随笔
收集整理的這篇文章主要介紹了
C++接口的定义用一个实例说明 [转]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?接口是一個沒有被實現的特殊的類,它是一系列操作的集合,我們可以把它看作是與其他對象通訊的協議。C++中沒有提供類似interface這樣的關鍵 字來定義接口,但是Mircrosoft c++中提供了__declspec(novtable)來修飾一個類,來表示該類沒有虛函數表,也就是虛函數都是純虛的。所以利用它我們依然可以定義一 個接口。代碼例子如下:
?
#include?<IOSTREAM>using?namespace?std;
#define?interface class __declspec(novtable)
interface?ICodec
{
public:
????virtual?bool?Decode(char?*?lpDataSrc,unsigned?int?nSrcLen,char?*?lpDataDst,unsigned?int?*pnDstLen);
????virtual?bool?Encode(char?*?lpDataSrc,unsigned?int?nSrcLen,char?*?lpDataDst,unsigned?int?*pnDstLen);
};
class?CCodec :?public?ICodec
{
public:
????virtual?bool?Decode(char?*?lpDataSrc,unsigned?int?nSrcLen,char?*?lpDataDst,unsigned?int?*pnDstLen)
???? {
???????? cout?<<?"解碼..."?<<?endl;
????????return?true;
???? }
????virtual?bool?Encode(char?*?lpDataSrc,unsigned?int?nSrcLen,char?*?lpDataDst,unsigned?int?*pnDstLen)
???? {
???????? cout?<<?"編碼..."?<<?endl;
????????return?true;
???? }
};
int?main(int?argc,?char*?argv[])
{
???? ICodec?*?pCodec?=?new?CCodec();
???? pCodec->Decode(NULL,0,NULL,NULL);
???? pCodec->Encode(NULL,0,NULL,NULL);
???? delete (CCodec*)pCodec;
????return?0;
}
?
上面的ICodec接口等價于下面的定義: class ICodec{
public:
????virtual bool Decode(char * lpDataSrc,unsigned int nSrcLen,char * lpDataDst,unsigned int *pnDstLen)=0;
????virtual bool Encode(char * lpDataSrc,unsigned int nSrcLen,char * lpDataDst,unsigned int *pnDstLen)=0;
};
轉載于:https://www.cnblogs.com/Sunwayking/articles/2178807.html
總結
以上是生活随笔為你收集整理的C++接口的定义用一个实例说明 [转]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乔布斯最伟大的贡献是什么
- 下一篇: linux 下查看log实时输出