《COM本质论》第二章学习(1)

本文探讨了在COM规范中如何解决接口命名冲突的问题。通过引入GUID作为接口的实际名字,可以确保接口标识的唯一性,避免因逻辑名字相同而引发的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义接口时,紧跟在关键字interface后面的叫做接口的逻辑名字,在没有引入GUID的时候,这个逻辑名字就是接口的唯一标识。正如第一章中展现的,运行时询问对象(Dynamic_cast)的时候使用的就是这个逻辑名字字符串。

 

当两个程序员各自独立开发一个接口,在给定的共同问题域中,两个接口定义不会完全相同,方法定义的实际顺序以及每个方法的原型都有可能存在差异,然而两个程序员给接口取了相同的逻辑名称。

 

使用过程中,针对第一个程序员开发的接口的客户程序,有可能与第二个程序员开发的对象一起运行,这时客户如果使用逻辑名称字符串询问对象是否支持这个接口,对象将会得到满足,返回一个非空的指针,而此时返回的是第二个程序员开发的接口,而并不是实际询问的第一个程序员开发的接口。

 

为了消除名字冲突,COM引入GUID来作为接口的实际名字,用来唯一标识接口。

 

COM中引用的GUID以DEC RPC中用到的UUID(Universally Unique Identifier)为基础。

当GUID用来命名COM接口时,被称为接口ID(interface ID ,IID)。

当GUID用来表示COM接口的实现时,被成为类ID(class ID,CLSID)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值