亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++ OBJECT

C++ OBJECT

C++
慕桂英3389331 2018-09-20 17:13:06
C++ OBJECT
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

C++是一個很底層的語言,直接與指針和內存二進制數據打交道的,不存在那些高層語言中的語言原生Object的類型。C++中可以用void*保存各個對象的指針,但它和Object對象是有本質的區別的。

你目前的需求,我估計是要做COM開發。C++里面調用COM比較麻煩,不會像VB或C#那樣給你屏蔽底層的細節,你需要了解COM的許多底層機制才能寫好相應的代碼。

VB中你簡單的寫一句CreateInstance("WinHttp.WinHttpRequest.5.1")就可以直接得到WinHttpRequest對象了,并且得到了它上面的IWinHttpRequest接口,你可以直接拿來使用。
VB在背后替你做了很多事情,所以你可以很簡單的使用,但在C++中就不一樣了,你必須一步一步自己來。

VB在背后幫你做了以下事情:
1. 先根據ProgID(比如 "WinHttp.WinHttpRequest.5.1")去找到這個COM類對應的CLSID。使用CLSIDFromProgID()函數使用ProgID查找對應的CLSID。
2. 調用CoCreateInstance(),創建指定CLSID對應的COM對象,得到一個IUnknown接口指向這個COM對象。
3. 調用IUnknown接口上的QueryInterface方法,獲得這個COM對象上指定的接口(比如IWinHttpRequest。一個COM對象上可能有多個接口,你得根據IID來指定其中一個)。

至此你才能拿到可以使用的IWinHttpRequest接口。而在C++中,這些都要你自己搞定。
期間涉及到很多COM的概念,如果沒有了解過的話可能會很難弄明白,所以如果要在C++下開發COM相關的東西,除非你只想照貓畫虎應付一下,否則建議還是補一下COM和ATL的相關基礎知識。

查看完整回答
反對 回復 2018-10-20
  • 1 回答
  • 0 關注
  • 831 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號