真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++類包含函數(shù)有哪些

這篇文章主要講解了“C++類包含函數(shù)有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++類包含函數(shù)有哪些”吧!

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十多年企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都近千家客戶提供網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營銷型網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),同時(shí)也為不同行業(yè)的客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)建站。

C++類包含三個(gè)我們關(guān)心的函數(shù):構(gòu)造函數(shù),析構(gòu)函數(shù),和所有重要的 DoSomething 函數(shù),我們需要把每一個(gè)函數(shù)包裹成與其等價(jià)的C++函數(shù),在這里拿出來和大家分享一下。

// original class  class CFoo  {  public:   CFoo(int x);   ~CFoo();   int DoSomething(int y);  };  // flattened C code  void* __stdcall new_CFoo(int x)  {   return new CFoo(x);  }  int __stdcall CFoo_DoSomething(void* handle, int y)  {   CFoo *foo = reinterpret_cast(handle);   return foo->DoSomething(y);  }  void __stdcall delete_CFoo(void *handle)  {   CFoo *foo = reinterpret_cast(handle);   delete foo;  }

這里有幾個(gè)比較重要的地方要注意。首先,注意每一個(gè)C++類被映射為一個(gè)簡單的 C 函數(shù)。其次,觀察到我們?yōu)?C 函數(shù)明確地使用 __stdcall 調(diào)用習(xí)慣。在前一篇 DLL 文章里,我們知道簡單的調(diào)用在 MSVC DLL 里的無格式 C 函數(shù),真是很麻煩。

如果我們放棄越過種種艱難困苦去用它,我們可以使這個(gè)努力稍微容易一點(diǎn)。讓 Borland 調(diào)用 Microsoft DLL 最簡單的辦法是 DLL 導(dǎo)出無格式,無修飾,__stdcall 調(diào)用習(xí)慣的 C++函數(shù)。Borland 和 Microsoft 對 __cdecl 函數(shù)的處理上是不同的。

通常,他們對 __stdcall 函數(shù)也不同,因?yàn)?MSVC 修飾 __stdcall 函數(shù),但我們可以通過添加一個(gè) DEF 文件到 MSVC 工程里來阻止這種行為。參見下載部分的例子有 DEF 文件的例子。其它關(guān)于代碼要注意的事情是 new_CFoo 函數(shù)返回一個(gè)指向 CFoo 對象的指針。BCB 調(diào)用者必須在本地保存這個(gè)指針。這可能看起來和這篇文章的主題有點(diǎn)矛盾。

畢竟,我想 BCB 不能使用來自 MSVC DLL 的 C++類?如果那是正確的,那么為什么我們還要返回一個(gè) CFoo 對象指針呢?答案是 BCB 不能調(diào)用 MSVC DLL 導(dǎo)出類的成員函數(shù)。但是,這并不意味著它不能存儲這樣對象的地址。new_CFoo 返回的是一個(gè) CFoo 對象的指針。

BCB 客戶端可以存儲這個(gè)指針,但不能用。BCB 不能廢棄它(不應(yīng)當(dāng)嘗試這么做)。讓這個(gè)觀點(diǎn)更容易理解一點(diǎn),new_CFoo 返回一個(gè)空指針(總之它不能返回別的什么東西)。在 BCB 這邊,除了存儲它,然后把它傳回給 DLL,沒有什么可以安全地處理這個(gè)空指針的方法。

Ok,在我們繼續(xù)前進(jìn)之前,還有另外兩個(gè)要十分注意的地方。首先,注意 CFoo_DoSomething 把空指針作為它的***個(gè)參數(shù)這個(gè)空指針與 new_CFoo 返回的是同一個(gè)空指針。空指針用 reinterpret_cast 被追溯到 CFoo 對象(你知道,當(dāng)你看到一個(gè) reinterpret_cast 的時(shí)候。

你正在處理是難看的代碼)。DoSomething 成員函數(shù)在轉(zhuǎn)換之后被調(diào)用。***注意空指針也是C++類的參數(shù)。包裝 DLL 刪除對象是至關(guān)緊要的。你不應(yīng)當(dāng)在 BCB 里對空指針調(diào)用 delete。顯然它不會按你想的去做。

感謝各位的閱讀,以上就是“C++類包含函數(shù)有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++類包含函數(shù)有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)站欄目:C++類包含函數(shù)有哪些
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/iicisc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部