吾俗网 > 杂谈 > 正文

​com口是什么接口(com口是干嘛的)

时间:2025-11-11 17:36

来源:吾俗网

点击:

com口是什么接口(com口是干嘛的)

如果你了解 C# 或者 Java 语言,接口就会是一个非常熟悉的概念。接口是一个对象上一组操作的集合,不涉及任何实现的细节,接口标志着方法和实现的分离。计算机中这种现象叫做解耦(decoupled)。

在 C++ 中,最接近于接口概念的就是纯虚类(pure virtual class)。纯虚类就是一个仅仅包含纯虚函数的类,除了纯虚函数不含有任何其它的成员变量或者函数,如:

//ThefollowingisnotactualCOM. //Pseudo-C++: interfaceIDrawable { voidDraw(); };

这个例子来源于一些用来绘图的库中的对象。IDrawable 接口定义了绘图中常用的操作,任何支持绘图功能的对象都必须支持该接口。(惯例,接口名称的首字母为 “I”),IDrawable 接口目前只定义了一个操作:Draw。

所有的接口都是抽象的,代码中不能直接创建一个 IDrawable 接口的实例对象( C++ 语法规则不支持纯虚函数对象的创建)。例如,下面的代码是无法编译通过的:

IDrawabledraw; draw.Draw();

相反的,图形库都会提供一些对象来实现 IDrawable 所定义的接口。例如,可以实现一个叫做 Shape 的类或者一个叫做 Bitmap 的类,C++ 中使用继承实现这种关系:

classShape:publicIDrawable { public: virtualvoidDraw();//OverrideDrawandprovideimplementation. }; classBitmap:publicIDrawable { public: virtualvoidDraw();//OverrideDrawandprovideimplementation. };

Shape 和 Bitmap 类定义了两种不同的对象,二者都支持绘图功能。每个类都继承自 IDrawable 接口,而对于 Draw 方法绘制的具体实现细节可以各自不同。

如果程序中使用二者进行绘制,可以使用 IDrawable 的指针对象来操纵它们,而不是直接使用 Shape 和 Bitmap 对象的指针。

IDrawable*pDrawable=CreateTriangleShape(); if(pDrawable) { pDrawable->Draw(); }

这有一个循环遍历 IDrawable 接口指针的列子,在这个数组中,每项成员可能是 Shape 对象,也可能是 Bitmap 对象,更可能是一些支持 IDrawable 接口的其他对象,代码中无需这些不同类型的实现细节,只需要调用它们都支持的共有接口 IDrawable 就可以绘制我们想要的图像。

voidDrawSomeShapes(IDrawable**drawableArray,size_tcount) { for(size_ti=0;i

Draw(); } }

COM 组件 的一个关键点就是调用者永远不需要知道派生类的具体实现细节。换句话说,在你的代码中一般不会声明 Shape 或者 Bitmap 类型的变量。所有的操作都是通过它们共有的接口 IDrawable 来完成。用这种方式,COM 组件可以做到接口和实现的完全分离。

你可以随时改变 Shape 或者 Bitmap 对象的绘制方法,例如修复一个 bug,或者增加一些新的能力,对于调用者来说是透明的,调用者的代码是无需任何修改的。

在 C++ 中,接口使用类或者结构体来实现。

文章中的代码案例只是用来演示说明问题,真正的 COM 接口 定义显然不会这样简单。一般一个 COM 接口的定义使用一种叫做 Interface Definition Language(IDL)—— 接口定义语言的东西。这个 IDL 文件将描述具体的接口行为,然后用 IDL 文件编译器处理,生成一组 C++ 头文件。

classIDrawable { public: virtualvoidDraw()=0; };

当你在使用 COM 组件的时候,一定要记住接口不是对象。它们是一组必须实现的方法集合。一些对象可以实现一样的接口,例如代码中的 Shape 对象和 Bitmap 对象。另外一个对象可以实现几个接口,例如,一个图形库可能定义一个名字叫做 ISerializable 的接口对象,它用来保存和加载图形对象数据(图形的序列化)。现在考虑下面的代码:

//Aninterfaceforserialization. classISerializable { public: virtualvoidLoad(PCWSTRfilename)=0;//Loadfromfile. virtualvoidSave(PCWSTRfilename)=0;//Savetofile. }; //Declarationsofdrawableobjecttypes. classShape:publicIDrawable { ... }; classBitmap:publicIDrawable,publicISerializable { ... };

在例子中,Bitmap 类实现了 ISerializable 接口,程序可以使用该接口保存和加载 Bitmap 对象。然而 Shape 类没有实现这个接口,所以它不支持这个功能。下面是例子中的继承关系:

上面的文字只是简单的介绍 COM 组件 的一些概念,目前我们还没有看见过一个真正的 COM 组件,接下来的内容从每个 COM 应用都必须做的一件事开始 —— COM 库初始化。

相关标签:

相关推荐

​香港生产白酒哪里有卖(北大荒白酒是哪里生产的)

​香港生产白酒哪里有卖(北大荒白酒是哪里生产的)

香港生产白酒哪里有卖(北大荒白酒是哪里生产的) 香港生产白酒哪里有卖?香港人喝的酒都是进口的,不是内地生产的。”这句话一出,立刻引起了网友的热议。其实,这句话是有道理...

2025-11-11 17:34:29

​古代身怀六甲是什么意思(六甲具体指的是什么)

​古代身怀六甲是什么意思(六甲具体指的是什么)

古代身怀六甲是什么意思(六甲具体指的是什么) 古代说女子怀孕,就说她是“身怀六甲”。 “六甲”的意思很明确,就是说 六十甲子中的“甲子、甲戌、甲申、甲午、甲辰、甲寅”...

2025-11-11 17:32:15

​12年拉菲葡萄酒(拉菲葡萄酒价格表)

​12年拉菲葡萄酒(拉菲葡萄酒价格表)

12年拉菲葡萄酒(拉菲葡萄酒价格表) 12年拉菲葡萄酒在中国市场的销售情况。数据显示,2010年至2016年,拉菲葡萄酒在中国的销售额从2.5亿元增长到了10亿元,年均复合增长率高达40%。其...

2025-11-11 17:30:00

​黄河流经多少个省,黄河和长江分别都流经过哪些省份呢?急求啦?

​黄河流经多少个省,黄河和长江分别都流经过哪些省份呢?急求啦?

黄河流经多少个省,黄河和长江分别都流经过哪些省份呢?急求啦? 黄河和长江分别都流经过哪些省份呢急求啦 简单来说,长江经过青海省,四川省,西藏自治区,云南省,重庆市,...

2025-11-11 17:27:45

​大年初一的风俗有哪些禁忌(大年初一风俗禁忌多,“3做4吃5不”,老传统不能

​大年初一的风俗有哪些禁忌(大年初一风俗禁忌多,“3做4吃5不”,老传统不能

大年初一的风俗有哪些禁忌(大年初一风俗禁忌多,“3做4吃5不”,老传统不能 丢,才有好彩头) 牛在十二生肖里有忠厚踏实、勤劳刻苦之意,早起也就意味着新的一年有好收获。而...

2025-11-11 17:25:30

​天堂向左深圳往右原著结局(天堂向左深圳往右全文免费阅读)

天堂向左深圳往右原著结局(天堂向左深圳往右全文免费阅读) 天堂向左深圳往右原著结局。这是一个悲伤的故事,也是一个美好的故事。我们的生活就是这样,总是有太多的无奈,也总...

2025-11-11 11:59:20

​揭姓的来源,“揭”姓最找起源于什么地方?

​揭姓的来源,“揭”姓最找起源于什么地方?

揭姓的来源,“揭”姓最找起源于什么地方? “揭”姓最找起源于什么地方 中华揭姓源自粤东揭阳——————————————————————————–2005年5月30日华声报讯:...

2025-11-11 11:57:05

​柳云龙主演的谍战片电视剧大全集

柳云龙主演的谍战片电视剧大全集 说到国产谍战剧,不得不提到“谍战教父”-六哥柳云龙,柳云龙多年只做谍战剧, 对谍战剧的精准把握,深刻诠释,完美演绎,圈内应该是无人能及...

2025-11-11 11:54:50

​靳东的两任妻子都是谁(揭秘靳东的婚姻经历)

​靳东的两任妻子都是谁(揭秘靳东的婚姻经历)

靳东的两任妻子都是谁(揭秘靳东的婚姻经历) 大家好:我是心静娱乐。 靳东的双重恋情:一生两位老婆的故事靳东是中国影视圈中备受尊敬的男演员,他出色的表演技巧和深情厚重的演...

2025-11-11 11:52:36

​心理学:“判断一个男人的人品,就看这四件事”

​心理学:“判断一个男人的人品,就看这四件事”

心理学:“判断一个男人的人品,就看这四件事” 女人婚后的生活是否幸福,完全取决于她的眼光究竟如何。这里所说的眼光并不是指在外表上挑剔对方,而是要看对方的人品与性格究...

2025-11-11 11:50:21

​松茸如何保存和清洗,新鲜松茸怎么清洗和保存

​松茸如何保存和清洗,新鲜松茸怎么清洗和保存

松茸如何保存和清洗,新鲜松茸怎么清洗和保存 本文目录 1.新鲜松茸怎么清洗和保存2.鲜松茸的清洗和保存方法3.鲜松茸的清洗和保存方法4.干松茸怎样清洗和保存 新鲜松茸怎么清洗和保...

2025-11-11 11:48:06

​这种花,清凉消暑又美味,人人都爱!

​这种花,清凉消暑又美味,人人都爱!

这种花,清凉消暑又美味,人人都爱! 荷花怎么吃 花花还记得小时候,大门外有一个池塘,一到夏天就开满了荷花,简直连水面都快看不到了!不过印象里,还是妈妈做的那些荷花美...

2025-11-11 11:45:52

​户口本可以买火车票吗,拿户口本可以买火车票必须本人去买吗?

户口本可以买火车票吗,拿户口本可以买火车票必须本人去买吗? 拿户口本可以买火车票必须本人去买吗 用户口本可以买火车票。铁路部门规定的25种可以购买火车票的证件中,户口簿...

2025-11-11 11:43:37

​10年,从门外汉成挎子改装高手,株洲“车痴”实现了他的复古梦

​10年,从门外汉成挎子改装高手,株洲“车痴”实现了他的复古梦

10年,从门外汉成挎子改装高手,株洲“车痴”实现了他的复古梦 记录株洲事、采访创业在株洲的人,我们的脚步一刻也没停下。近期, 株洲发布“有位视频” 将陆续推出“创业在株...

2025-11-11 11:41:22

​印花税会计分录(印花税会计分录怎么做)

​印花税会计分录(印花税会计分录怎么做)

印花税会计分录(印花税会计分录怎么做) 1、通过应交税费科目核算,计提印花税的分录为借税金及附加贷应交税费应交印花税缴纳时借应交税费应交印花税贷库存现金或银行存款不通过...

2025-11-11 11:39:07

​友谊万岁(友谊万岁杨千嬅)

​友谊万岁(友谊万岁杨千嬅)

友谊万岁(友谊万岁杨千嬅) 友谊万岁 友谊万岁 文//杨保军 图片英文歌曲|闽子 · 编辑|文子 今夜呀 怎么就这么狂 端起杯 咣当就喝光 回家的路上 晃晃悠悠 像是醉的模样 借着酒劲 趴在...

2025-11-11 02:55:39

​腰间盘突出可以练瑜伽吗?练瑜伽能治腰间盘突出吗?

​腰间盘突出可以练瑜伽吗?练瑜伽能治腰间盘突出吗?

腰间盘突出可以练瑜伽吗?练瑜伽能治腰间盘突出吗? 瑜伽,是我们生活中,非常健康的一项有氧运动!瑜伽对身体有很好的好处,对于很多疾病,瑜伽也能起到治疗的作用。不少人困...

2025-11-11 02:53:24

​西凤老酒93价格表_93年西凤酒55度

​西凤老酒93价格表_93年西凤酒55度

西凤老酒93价格表_93年西凤酒55度 西凤老酒93价格表》,详细介绍了西凤酒的价格体系。这份价格表是根据西凤酒产品的不同而制定的,包括西凤酒的生产工艺、原料、酒质、包装、装潢...

2025-11-11 02:51:09

​吃螺蛳粉的危害是什么(常吃螺蛳粉会致癌)

​吃螺蛳粉的危害是什么(常吃螺蛳粉会致癌)

吃螺蛳粉的危害是什么(常吃螺蛳粉会致癌) “螺蛳粉不能长期吃,吃多了会致癌”,接下来我们就来聊聊关于吃螺蛳粉的危害是什么?以下内容大家不妨参考一二希望能帮到您! 吃螺蛳...

2025-11-11 02:48:54

​真露和啤酒能一起喝吗?真露烧酒和啤酒

真露和啤酒能一起喝吗?真露烧酒和啤酒 真露和啤酒能一起喝吗?这两种饮料都含有酒精,一起喝会产生双酚a,这种物质对人体有害,尤其是女性朋友,容易引起乳腺癌。所以建议大...

2025-11-11 02:46:39