#include "stdafx.h"
#include <iostream>
#include <ObjBase.h>
using namespace std;
void trace(const char* pMsg)
{
cout<<pMsg<<endl;
}
interface IX
{
virtual void __stdcall Fx1() = 0;
virtual void __stdcall Fx2() = 0;
};
interface IY
{
virtual void __stdcall Fy1() = 0;
virtual void __stdcall Fy2() = 0;
};
//Interface implementation
class CA : public IX,
public IY
{
public:
//Implement interface IX
virtual void __stdcall Fx1()
{
cout<<"CA::Fx1"<<endl;
}
virtual void __stdcall Fx2()
{
cout<<"CA::Fx2"<<endl;
}
//Implement interface IY
virtual void __stdcall Fy1()
{
cout<<"CA::Fy1"<<endl;
}
virtual void __stdcall Fy2()
{
cout<<"CA::Fy2"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
trace("client:create an instance of the componemt");
CA* pA = new CA;
//Get an IX pointer
IX* pIX = pA;
trace("client:use the IX interface");
pIX->Fx1();
pIX->Fx2();
//Get an IY pointer
IY* pIY = pA;
trace("client:use the IY interface");
pIY->Fy1();
pIY->Fy2();
trace("client:delete the componet");
delete pA;
return 0;
}这个例子的关键之处在于
1、COM接口是在C++中是纯抽象基类实现的
2、一个COM组件可以提供多个接口
3、一个C++类可以使用多继承来实现一个可以提供多个接口的组件
本文通过一个C++示例介绍了如何使用纯抽象基类实现COM接口,并展示了如何通过多继承在一个类中实现多个接口。
2085

被折叠的 条评论
为什么被折叠?



