第二章 接口
接口是《COM技术内幕》的第二章,接口对COM的意义不言而喻,要想实现软件设计的组件化,组件间的良好稳定的接口定义是首要条件.对DLL而言,接口就是它所输出的那些函数;C++类的接口则是该类的一个成员函数集.而COM的接口也包括了一些函数,但就本质来说,COM的接口是一个包含函数指针数组的内存结构.记住COM是个定义上的东西,我们用其他方法让COM的由定义变为实现,在C++中,可以使用抽象基类来实现COM接口.
使用struct定义interface是因为,struct的成员将自动具有公有的属性,不需要再用public关键字.下面是一个接口的例子,姑且当作一个COM接口的雏形吧:
#include
<
iostream.h
>
#include < objbase.h > // #define interface struct
void trace( const char * pMsg)
... {
cout<<pMsg<<endl;
}
interface IX
... {
virtual void _stdcall Fx1() = 0;
virtual void _stdcall Fx2() = 0;
} ;
interface IY
#include < objbase.h > // #define interface struct
void trace( const char * pMsg)
... {
cout<<pMsg<<endl;
}
interface IX
... {
virtual void _stdcall Fx1() = 0;
virtual void _stdcall Fx2() = 0;
} ;
interface IY