http://www.codeproject.com/com/outlookcontacts.asp


#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;
};