当前位置:  编程技术>c/c++/嵌入式

C++ COM编程之什么是接口?

    来源: 互联网  发布时间:2014-10-29

    本文导语:  什么是接口? 说到COM,就不得不说接口了;在进行COM开发的过程中,可以说,我一直都在和各种各样的接口打交道。那接口是什么?对于COM来说,接口是一个包含一个函数指针数组的内存结构,每一个数组元素包含的是一个由...

什么是接口?

说到COM,就不得不说接口了;在进行COM开发的过程中,可以说,我一直都在和各种各样的接口打交道。那接口是什么?对于COM来说,接口是一个包含一个函数指针数组的内存结构,每一个数组元素包含的是一个由组件所实现的函数的地址;所以,对于COM,接口就是这样的一个内存结构,其它东西都是一些COM并不关心的实现细节。

在C++中,可以使用抽象基类来实现COM接口。由于一个COM组件可以支持任意数目的接口,因此对于组件,可以使用抽象基类的多重继承来实现它。

接口的好处

接口提供了两个不同对象间的一种连接。对于客户来说,一个组件就是一个接口集。客户只能通过接口才能同COM组件打交道。而整体上来讲,客户对于一个组件可以说是知之甚少;甚至在某些时候,客户甚至不必知道一个组件所提供的所有接口,就像你进行Windows  Shell开发时,对于一个它提供的组件,很多时候,你不可能知道所有的接口的。对于一个应用程序而言,接口是最重要的。组件本身只不过是接口的实现细节。

在实际开发时,你并不需要去理会组件的实现细节,你面对的是接口,面对接口工作。即使组件的开发者将组件的实现替换掉了,而接口不变,你的程序也不需要变动。接口,就像一个标准一样,让我们去遵从这个标准。之前做的一个项目就是替换一个组件的实现层,而对于接口,则不需要进行变更。

简单的实现

通过一个简单的例子来理解接口:

代码如下:

/*
** FileName     : SimpleInterfaceDemo
** Author       : Jelly Young
** Date         : 2013/12/11
** Description  : More information, please go to http://www.
*/
#include
#include
using namespace std;
interface IExample1
{
     virtual void __stdcall Fx1() = 0;
     virtual void __stdcall Fx2() = 0;
};
interface IExample2
{
     virtual void __stdcall Fy1() = 0;
     virtual void __stdcall Fy2() = 0;
};
// Implementation
class CImplementation : public IExample1, public IExample2
{
public:
     // Implementation IExample1
     void __stdcall Fx1() { cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下如何编程得到网卡的硬件描述,如得到某块网卡为“3Com 3c590/3c595....”
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • sendmail如何配置多个邮件域名,在局域网内 如 aaa@aaa.com;aaa@bbb.com,
  • 我编一个程序要控制端口Com1,但手头没有那个设备,谁知道哪里有能模拟Com端口的软件!!!!!!
  • 关于apache ,端口该为8080,想http://www.as.com访问,而不是www.as.com:8080
  • import com.sun.java.swing.*;提示找不到com.sun.java包我该怎么办?急!
  • com.borland.dbswing.* 在什么文件里啊?可以发给我一个吗?Rex_fa@163.com 告诉我也行
  • 谁知道类似于my.sina.com.cn和cn.my.yahoo.com中的版面个性化定制的原理是什么?
  • 比如进入a.com,怎么自动过3秒转入bb.com?
  • com.Oracle.*;是指相对于当前目录下的COM下的ORACLE吗?java是怎么寻找PACKAGE的?
  • ###java调用COM组件或COM调用java组件(EJB)解决办法。###
  • Foursquare.com的客户端 Foursquare
  • 便携软件套装 PortableApps.com
  • Use COM in java
  • Java能否写COM组件?
  • 怎么去配置COM口?
  • 多媒体叠加COM组件 ansoply
  • DNS问题 http://ooo.com 不能访问
  • java如何调用com?
  • 我的代码中已经假如smtp认证,为什么在tomcat上还提示客户端没有验证?使用smtp.sohu.com或smtp.sina.com.cn都不行代码如下:
  • 有谁能给我电子白板的源代码???急!!!!!!guangmin001@china.com
  • 不解决也给分。com1连机很慢?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3