第一章:学习笔记一

1。1 定义接口

   接口概念:接口只不过是接口实现者和使用者之间的协议。定义接口,实际上是在说:“我看到了这个功能的必要。我承认该功能可以用许多不同方式来实现。我真的不在乎该功能是如何实现的,但是最好坚持这些规定。”接口用户可以往接口规定上编码,而不必担心规定会改变。

接口的定义:

接口有如下特征:

 1)接口被声明为interface类型,不是CLASS类型。接口名以字母I开始。

 2)所有的接口都从IUnKnown直接或间接继承。并且IUnKnown是COM中所有接口的基础。

 3)不能创建接口实例如以下代码是非法的

    var MyNumber:IFormattedNumber;

    begin

        MyNumber:=IFormattedNumber.Create;//非法

    end;

 4)不能在接口中指定范围指示。接口定义的所有方法都是公有型(PUBLIC)。PUBLIC也不能在接口声明中包括。

 5)接口不能声明变量。

 6)接口中声明的所有函数和过程,概念上讲都是虚抽象函数和过程。声明时不必带Virtual关键字。

 

1。1。2 接口是不变的

    定义并公布接口之后,就固定成型,不能修改那个接口了。如果需要增强接口,可以发表新“版本”的接口。如果新接口所做的就是添加一个新的类似的接口,那么可以从类似的接口中派生出来。

  如下代码:

 

 

1.2声明接口

  

   全球唯一标识符GUID,所有的COM接口以及某些只在自己的应用程序内部使用的接口,需要唯一的GUID才能正常运行(CTRL+SHIFT+G)在内部,DELPHI调用WINAPI函数CoCreateGuid来产生GUID。代码如下:

  声明接口是创建一个有用的接口的前半部分。声明接口之后。仍然需要给出接口的实现。

 

1。3实现接口

   因为不能创建接口的实例。那么如何使用接口:创建实现接口的类。如:

  

以上代码编译的时候会出现错误信息。接下来将学习IUnKnown.

 

1.3.1实现IUnKnown

 

 

 QueryInterface:是请求指向一个接口指针的函数。如果接口是由问题中的对象实现的,QueryInterface返回在Obj参数中的接口,且返回数值为0。如果接口不是由对象实现的,QueryInterface返回Microsoft定义的常量E_NOINTERFACE.

_AddRef

接口是引用计数。因些在对象中当获得接口指针时,对象被引用的次数就增加了。当结束使用接口时,对象的引用次数就下降了。当引用次数到达零时,就自动销毁对象。_AddRef是负责增大引用计数的函数。

_Release

负责降低引用计数的函数。当引用计数达到零时,就自动销毁对象。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值