久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C++/CLI簡介

 蘭亭文藝 2020-01-07

  在Windows上,,除非我們必須得用C++來寫界面,否則我會選擇避免,,避免學(xué)習(xí)和使用MFC,。替代的方案是用C#來做界面,然后用C++/CLI來連接C#和Native C++,。那么問題來了,,C++/CLI是何方神圣?

  百度上對于C++/CLI是這么說的——“C++/CLI是靜態(tài)C++對象模型到CLI的動態(tài)組件對象編程模型的捆綁,。簡而言之就是如何用C++在·NET中編程,,而不是C#或Visual Basic,。像C#和CLI本身一樣,C++/CLI正在ECMA(歐洲計(jì)算機(jī)制造商協(xié)會)主持下進(jìn)行標(biāo)準(zhǔn)化,,以最終符合ISO標(biāo)準(zhǔn),。公共語言運(yùn)行時(CLR)是CLI的微軟版本,它非常適用于微軟的Windows操作系統(tǒng),,相似地,,Visual C++2005是C++/CLI的實(shí)現(xiàn),?!?/p>

  我是這么說的——C++/CLI相當(dāng)于C#和Native C++的組合語言,多數(shù)情況下你可以像C#一樣寫代碼托管代碼,,或者像Native C++那樣寫本地代碼,,或者在同一個文件里面同時包含這兩種語言。編譯器會很好的區(qū)分這兩者,。

  某大牛是這么說——.Net的歸.Net,,C++的歸C++。這里Net指得是托管代碼,,C++指得是本地代碼,。

  讓我們來點(diǎn)細(xì)節(jié)吧:

  1、從VS里的項(xiàng)目類型上說,,有三種:一種是本機(jī)代碼并且不使用CLR支持,。這種項(xiàng)目還是原來的C++項(xiàng)目,沒有任何改變,,直接編譯出本機(jī)代碼,。可以被C++/CLI項(xiàng)目引用,,但是不能被其他托管語言項(xiàng)目引用,。第二種是原來本機(jī)代碼,編譯時加入CLR支持,,變成能夠被其他.Net語言(例如C#)調(diào)用的項(xiàng)目或者dll,。這種項(xiàng)目里本身不含托管代碼,,但可以被其他托管代碼引用(包括C++,、C#等),。第三種是CLR項(xiàng)目,,這是一個原生托管項(xiàng)目,,其中除了默認(rèn)的托管代碼,還可以用#pragma unmanaged來指示將代碼編譯成本機(jī)代碼,。可以直接調(diào)用其他托管代碼或者本機(jī)代碼,,也可以被其他托管代碼調(diào)用,。

  2、從內(nèi)存上說,,C++/CLI的內(nèi)存分為3種:棧內(nèi)存,、本機(jī)堆內(nèi)存和托管堆內(nèi)存。棧內(nèi)存中可以包含本機(jī)對象和托管對象,,退出所在范圍他們的生命周期無差別地結(jié)束,。本機(jī)堆內(nèi)存是Native C++的動態(tài)內(nèi)存,可以通過new或者malloc關(guān)鍵字動態(tài)動態(tài)分配,。使用完畢后,,由程序員手動釋放,否則會內(nèi)存泄露,。托管堆內(nèi)存是托管對象的動態(tài)內(nèi)存,,由gcnew關(guān)鍵字動態(tài)分配,。不再使用的托管對象內(nèi)存由公共運(yùn)行時垃圾回收器(.Net GC)回收,不用程序員處理,。

  3、從類庫上說,,CLR項(xiàng)目原生支持.Net Framework中滿足CLS的所有類型,。比如C#中常見的String,、List,、Dictionary等,,在這里的使用方式基本不變,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多