亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C++ > 正文

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

2020-05-23 14:21:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了C++ COM編程之什么是接口?在C++中,可以使用抽象基類來(lái)實(shí)現(xiàn)COM接口,需要的朋友可以參考下
 
 

什么是接口?

說(shuō)到COM,就不得不說(shuō)接口了;在進(jìn)行COM開(kāi)發(fā)的過(guò)程中,可以說(shuō),我一直都在和各種各樣的接口打交道。那接口是什么?對(duì)于COM來(lái)說(shuō),接口是一個(gè)包含一個(gè)函數(shù)指針數(shù)組的內(nèi)存結(jié)構(gòu),每一個(gè)數(shù)組元素包含的是一個(gè)由組件所實(shí)現(xiàn)的函數(shù)的地址;所以,對(duì)于COM,接口就是這樣的一個(gè)內(nèi)存結(jié)構(gòu),其它東西都是一些COM并不關(guān)心的實(shí)現(xiàn)細(xì)節(jié)。

在C++中,可以使用抽象基類來(lái)實(shí)現(xiàn)COM接口。由于一個(gè)COM組件可以支持任意數(shù)目的接口,因此對(duì)于組件,可以使用抽象基類的多重繼承來(lái)實(shí)現(xiàn)它。

接口的好處

接口提供了兩個(gè)不同對(duì)象間的一種連接。對(duì)于客戶來(lái)說(shuō),一個(gè)組件就是一個(gè)接口集。客戶只能通過(guò)接口才能同COM組件打交道。而整體上來(lái)講,客戶對(duì)于一個(gè)組件可以說(shuō)是知之甚少;甚至在某些時(shí)候,客戶甚至不必知道一個(gè)組件所提供的所有接口,就像你進(jìn)行Windows  Shell開(kāi)發(fā)時(shí),對(duì)于一個(gè)它提供的組件,很多時(shí)候,你不可能知道所有的接口的。對(duì)于一個(gè)應(yīng)用程序而言,接口是最重要的。組件本身只不過(guò)是接口的實(shí)現(xiàn)細(xì)節(jié)。

在實(shí)際開(kāi)發(fā)時(shí),你并不需要去理會(huì)組件的實(shí)現(xiàn)細(xì)節(jié),你面對(duì)的是接口,面對(duì)接口工作。即使組件的開(kāi)發(fā)者將組件的實(shí)現(xiàn)替換掉了,而接口不變,你的程序也不需要變動(dòng)。接口,就像一個(gè)標(biāo)準(zhǔn)一樣,讓我們?nèi)プ駨倪@個(gè)標(biāo)準(zhǔn)。之前做的一個(gè)項(xiàng)目就是替換一個(gè)組件的實(shí)現(xiàn)層,而對(duì)于接口,則不需要進(jìn)行變更。

簡(jiǎn)單的實(shí)現(xiàn)

通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)理解接口:

 

復(fù)制代碼代碼如下:

/*
** FileName     : SimpleInterfaceDemo
** Author       : Jelly Young
** Date         : 2013/12/11
** Description  : More information, please go to http://www.49028c.com
*/
#include <iostream>
#include <combaseapi.h>
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<<"CImplementation::Fx1"<<endl; }
     void __stdcall Fx2() { cout<<"CImplementation::Fx2"<<endl; }
     // Implementation IExample2
     void __stdcall Fy1() { cout<<"CImplementation::Fy1"<<endl; }
     void __stdcall Fy2() { cout<<"CImplementation::Fy2"<<endl; }
};
// Client
int main()
{
     cout<<"Create an instance of the component."<<endl;
     CImplementation *pCImplementation = new CImplementation;
     // Get the IExample1 pointer
     IExample1 *pIExample1 = pCImplementation;
     // Use the IExample1 interface
     pIExample1->Fx1();
     pIExample1->Fx2();
     // Get the IExample2 pointer
     IExample2 *pIExample2 = pCImplementation;
     // Use the IExample2 pointer
     // Use the IExample2 interface
     pIExample2->Fy1();
     pIExample2->Fy2();
     // Destroy the component
     if (pCImplementation != NULL)
     {
          delete pCImplementation;
          pCImplementation = NULL;
          pIExample1 = NULL;
          pIExample2 = NULL;
     }
}

 

上面的例子中,client通過(guò)兩個(gè)接口pIExample1和pIExample2來(lái)和組件進(jìn)行通信。在聲明接口時(shí),使用了兩個(gè)純抽象基類IX和IY??偨Y(jié)上面代碼的關(guān)鍵之處在于:

1.COM接口在C++中是用純抽象基類實(shí)現(xiàn)的;
2.一個(gè)COM組件可以提供多個(gè)接口;
3.一個(gè)C++類可以使用多繼承來(lái)實(shí)現(xiàn)一個(gè)可以提供多個(gè)接口的組件。

細(xì)節(jié)剖析

interface這貨是從哪里來(lái)的?你會(huì)很好奇,是不是好奇的連下巴都掉下來(lái)了?C++也有interface關(guān)鍵字?不錯(cuò),這個(gè)關(guān)鍵字是在combaseapi.h頭文件中定義的,定義如下:

復(fù)制代碼代碼如下:

#define __STRUCT__ struct
#define interface __STRUCT__

 

說(shuō)白了,就是用C++的關(guān)鍵字struct定義的一個(gè)結(jié)構(gòu)體。使用struct定義有什么好處呢?首先需要搞清楚struct和class的區(qū)別。學(xué)了Java和C#的都知道,由于接口中定義的都是允許客戶調(diào)用的,所以在接口中就不需要private和protected的了,如果使用class,而必須還要使用public關(guān)鍵字強(qiáng)調(diào)接口的公有屬性,而struct默認(rèn)的都是公有屬性,這樣就省去了添加public關(guān)鍵字的麻煩。

__stdcall是什么?__stdcall是一種用來(lái)修飾函數(shù)的關(guān)鍵字,主要約定了兩件事情:

1.參數(shù)傳遞順序,__stdcall表示參數(shù)從右向左壓入堆棧;
2.調(diào)用堆棧由誰(shuí)(調(diào)用函數(shù)或被調(diào)用函數(shù))清理,__stdcall表示由被調(diào)用函數(shù)修改堆棧。

接口是由純虛函數(shù)實(shí)現(xiàn)的,為什么是要這樣?以及展現(xiàn)出來(lái)的多態(tài),這個(gè)說(shuō)來(lái)話長(zhǎng),我將在下一篇博文中進(jìn)行總結(jié)。

總結(jié)

在這里對(duì)接口基礎(chǔ)知識(shí)進(jìn)行了掃盲式的總結(jié),而這些簡(jiǎn)單的知識(shí)點(diǎn)也是日后開(kāi)發(fā)中會(huì)經(jīng)常遇到的,這里把這些東西掌握好了,等日后開(kāi)發(fā)時(shí)也會(huì)感到很輕松。希望大家能從這篇博文中學(xué)到一定的知識(shí),同時(shí)也希望大家對(duì)我的博客提一些中肯的建議。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
99久精品视频在线观看视频| 97久久人国产精品婷婷| 欧美三级电影网址| 日本网址在线观看| 日本中文字幕成人| 久久综合第一页| 一个人在线观看免费视频www| 成人看片免费| 日韩电影大全免费观看2023年上| 一本一本久久a久久综合精品蜜桃| 成人午夜又粗又硬又大| 91美女片黄在线| 免费av毛片在线看| 亚洲成人第一页| eeuss影院www在线播放| 一区免费观看| 国产不卡的av| 在线亚洲欧美| 免费的av电影| 国产精品视频一| 欧美天堂亚洲电影院在线观看| 国产专区中文字幕| 伊人中文在线| 欧美天堂一区二区三区| 第一区第二区在线| 亚洲精品一区二区三区区别| 午夜精品久久久久久久99老熟妇| 99在线观看视频网站| 国产精品久久久久久成人| 日本激情视频在线| 人人爽人人av| 国产原创在线视频| 久久精品国产亚洲5555| 一区二区三区日韩精品| jizz在线免费观看| 性一交一乱一伧老太| 亚洲色图15p| 女同一区二区免费aⅴ| 欧美刺激午夜性久久久久久久| www.youjizz.com亚洲| 蜜桃视频最新网址| 天海翼视频在线观看| 男人的天堂一区| 国产视频1区2区3区| 亚洲欧美丝袜中文综合| 成人av毛片| 色资源在线观看| 国产主播欧美精品| 国产免费的av| 蜜臀久久久久久999| 极品一线天粉嫩虎白馒头| av午夜在线观看| 国产精品黄色在线观看| 91精品美女在线| 国产精品初高中精品久久| 在线亚洲观看| 91免费观看视频| 欧美极品欧美精品欧美| 国产精品久久久久久久99| 国产黄色大片在线观看| 中字幕一区二区三区乱码| 亚洲精品美女在线观看播放| 亚洲www在线观看| 中文字幕 自拍偷拍| 久久99精品国产99久久6尤物| 九色丨蝌蚪丨成人| 亚洲精品色午夜无码专区日韩| 致1999电视剧免费观看策驰影院| 2222www色视频在线观看| 性欧美videos另类喷潮| 成片免费观看| 老司机午夜网站| 久久影院午夜精品| 888av在线视频| 日本不卡的三区四区五区| 日韩一级性生活片| va婷婷在线免费观看| av天堂一区二区| 欧美大肥婆大肥bbbbb| 五月精品视频| 中文一区在线| 一区二区三区高清国产| 毛片网站在线观看| 国产精品无码专区av在线播放| 国产成人午夜电影| 少妇性bbb搡bbb爽爽爽欧美| av日韩中文字幕| 午夜天堂在线视频| 成a人v在线播放| 国产精品国三级国产av| 99综合精品| 日本在线电影一区二区三区| 亚洲电影有码| 不卡一区二区在线观看| 国产情侣在线播放| 久久久久久久久久91| 色狠狠综合天天综合综合| 欧美三级黄色大片| 大尺度做爰床戏呻吟舒畅| 久久国产成人午夜av影院| 日韩免费啪啪| 欧美精品一二三| 日韩最新av在线| 精品电影一区二区| 激情小说亚洲图片| 91麻豆精品国产综合久久久| 高清欧美精品xxxxx在线看| 91精品一区二区| 欧美成人精品一区二区男人看| 老女人性生活视频| 亚洲无码久久久久| 免费在线一区二区三区| 在线观看免费视频高清游戏推荐| 成人精品一区二区三区四区| 日韩精品高清视频| 午夜不卡在线视频| 91麻豆产精品久久久久久| 波多野结衣中文字幕一区| 国产精品原创| 国产精品女主播一区二区三区| 欧美日韩国产中文精品字幕自在自线| 国产精品久久久久永久免费看| 久久99精品久久久久久噜噜| 欧美1819sex性处18免费| 高h调教冰块play男男双性文| 欧美成人免费网站| 国产伦精品一区二区三区免| 成人性生活av| 国产伦精品一区二区三区四区视频| 国产亚洲精品精华液| 国产美女视频网站| 视频在线观看91| 国产高清一区视频| 国产精品扒开腿做爽爽爽视频软件| 国产精品一区在线看| 国产盗摄一区二区三区| 黄色在线观看av| 国产精品91免费在线| 日日日日影院| 欧美日韩福利| 欧美精品91| 亚洲欧洲午夜| 亚洲一区二区图片| 精品国产乱码久久久久久影片| 日本人体一区二区| 可以直接看的无码av| 国产精品国产三级国产专播品爱网| 精品午夜一区二区三区在线观看| 国产河南妇女毛片精品久久久| 亚洲天堂成人网| 精品国产乱码久久久久久蜜臀网站| 18性欧美xxxⅹ性满足| 日韩视频永久免费观看| 男女羞羞电影免费观看| 91精品国产免费久久综合| 国产精华7777777| 丰满少妇又爽又紧又丰满69| 精品久久久久久久久久国产| 国产精品爽爽ⅴa在线观看| 久久精品日产第一区二区| av在线免费播放网址| 亚洲成色www.777999| 久久亚洲高清| 宅男在线一区| 亚洲一区二区中文字幕在线观看| 国产69久久精品成人看| 成人3d动漫一区二区三区| 2023欧美最顶级a∨艳星| 色播视频在线播放| 国产盗摄一区二区三区| 国产又黄又爽视频| 欧美日韩一区二区三区不卡| 成人三级高清视频在线看| 欧美成人高清电影在线| 久久婷婷综合中文字幕| 1024精品一区二区三区| 精品久久久久av| a级高清视频欧美日韩| 欧美激情视频在线| 黄色毛片在线看| 成人亚洲视频| 黑森林国产精品av| 成人激情电影一区二区| 永久免费黄色软件| 亚洲七七久久综合桃花剧情介绍| 久久久久久久欧美精品| 亚洲在线观看网站| 91高清免费看| heyzo高清在线| 欧美成年人在线观看| 2222www色视频在线观看| 欧美丰满老妇熟乱xxxxyyy| 性猛交富婆╳xxx乱大交一| 国产高清在线免费观看| 中文字幕精品视频在线| 青春草在线视频观看| 麻豆久久久久| 飘雪影院手机免费高清版在线观看| 国产伦精品一区二区三区视频| 无尽裸体动漫2d在线观看| 欧美激情aⅴ一区二区三区| 欧美成人久久| 二区在线视频| 日韩中文字幕不卡| 国产剧情麻豆剧果冻传媒视频免费| 色哟哟无码精品一区二区三区| 国产精品揄拍100视频| 丁香婷婷深情五月亚洲| 欧美大尺度激情区在线播放| 不卡一卡2卡3卡4卡精品在| 一区二区三区少妇| 国产一区精品视频| 国产探花一区二区| 美女脱光内衣内裤| 亚洲最新av| 国产精选在线观看| 国产精品久久久久久网站| a毛片不卡免费看片| 激情综合亚洲精品| 午夜视频在线观看一区二区| 国产精品12345| 久久精品国产2020观看福利| 久久久一区二区| 亚洲免费观看高清完整版在线| 欧美福利第一页| 国产欧美日韩久久| 91社区视频| 国产三区精品| 中文字幕人妻一区二区三区视频| 黑人巨大猛交丰满少妇| 91av在线免费观看视频| 亚洲av鲁丝一区二区三区| 《视频一区视频二区| www视频免费| 国产精品入口66mio| h在线观看免费| 91香蕉视频在线| 日韩免费电影一区二区三区| 四虎国产精品免费观看| 9999热视频在线观看| 国产激情第一页| 欧美在线观看一区二区| 日韩欧美国产精品| 夜夜躁狠狠躁日日躁av| 在线成人直播| 午夜影院免费| 国产91丝袜在线观看| 免费观看又污又黄在线观看国产| 日韩欧美伦理电影院| 粉嫩av四季av绯色av第一区| 亚洲一二三四在线观看| 日韩免费视频| 国产精久久久久久| 114美女做爰视频在线| 成人午夜福利视频| 久久三级中文| 亚洲国产一二三精品无码| 999国产精品永久免费视频app| 欧美又大又硬又粗bbbbb| 国产精品免费精品自在线观看| 亚洲欧美日韩综合aⅴ视频| 91久久精品美女| 成人久久久久久| 轻轻色免费在线视频| 欧洲一级视频| 国产精品一国产精品最新章节| 91沈先生作品| 中文字幕在线久热精品| 国产剧情av片巨作醉酒女邻居| 波多野结衣高清在线| 亚洲欧美日韩第一页| 国内外免费激情视频| 久久先锋影音av鲁色资源| 四季av一区二区凹凸精品| 国产日本韩国在线播放| 九九**精品视频免费播放| 国产一区二区三区久久久久久久久| 欧美e片成人在线播放乱妇| 日本乱子伦xxxx| 日韩欧美一区二区三区久久婷婷| 欧美人与动性xxxxx杂性| 久久久精品99| 8x海外华人永久免费日韩内陆视频| www.麻豆av| www.8ⅹ8ⅹ羞羞漫画在线看| 欧美成人第一页| 国产精品久久国产精品| 丝袜美腿亚洲一区二区| 日韩国产在线观看| 久久精品国产色蜜蜜麻豆| 欧美在线不卡区| 欧美激情videoshd| 亚洲品质自拍| 日韩精品在线观看视频| 性欧美极品xxxx欧美一区二区| 欧美日韩国产一级| 国产成人无码精品久久二区三| 九九综合九九综合| 日韩成人av免费| 欧美精品videos极品| 国产精品欧美一区二区三区奶水| 少妇毛片一区二区三区| 欧美性生活影院| 成人精品视频| 亚洲77777| 日韩极品精品视频免费观看| 国产红桃视频| 成av人片一区二区| 看电视剧不卡顿的网站| 好看的亚洲午夜视频在线| 日韩综合网站| 欧美二区在线看| 成人看片黄a免费看视频| 精品成人一区| 国产精品色哟哟网站| 天天躁日日躁aaaxxⅹ| 国产一区美女在线| 亚洲小说春色综合另类网蜜桃| 理论片在线观看理伦片| 搡的我好爽在线观看免费视频| 91黑人精品一区二区三区| 免费亚洲一区| 免费在线视频一区| 免费不卡在线视频| 在线视频国内一区二区| 亚洲国产成人av| 一级黄色免费| 欧美精品观看|