C++超集C++/CLI模塊的基本用法
C#和C++是非常相似的兩種語言,然而我們卻常常將其用于兩種不同的地方,C#得益于其簡潔的語法和豐富的類庫,常用來構(gòu)建業(yè)務(wù)系統(tǒng)。C++則具有底層API的訪問能力和拔尖的執(zhí)行效率,往往用于訪問底層模塊和構(gòu)建有性能要求的算法。
這兩種場景看起來有較大的差異,大多數(shù)的時候可以各行其道。但還是有很多時候會出現(xiàn)融合的情況。當我們構(gòu)建分布式系統(tǒng)的時候,由于RPC機制一般都是語言無關(guān)的,我們大可以將其各盡所長,按需劃分在最能發(fā)揮其長處的位置。然而,一旦我們需要構(gòu)建融合兩者需求的集中式系統(tǒng)的時候,就會頭痛無比。
此時,我們可以使用C++/CLI搭建C++和.Net之間的橋梁,C++/CLI是一個比較有意思的兩棲模塊,它具有如下特點
既可以訪問.Net類庫,也可以訪問C++原生類庫
既可以被.Net程序引用,也可以被C++原生程序引用
使用C++/CLI,我們可以使用C++編寫算法,用C#編寫界面,也可以使用.Net Framework類庫增強C++程序功能,各取所長。
下面我們就以一個簡單的例子來演示一下它的用法:
Calculator.h:
#pragma?once namespace?CppCliTest { public?ref?class?Calculator { public: int?Add(int?a,?int?b); }; }
Calculator.cpp
#include?"stdafx.h" #include?"Calculator.h" namespace?CppCliTest { int?Calculator::Add(int?a,?int?b) { return?a?+?b; } }
main.cpp
#include?"stdafx.h" #include?"Calculator.h" using?namespace?System; using?namespace?CppCliTest; int?main(array<System::String?^> ^args) { Calculator^ calculator =?gcnew?Calculator(); int?result = calculator->Add(3, 2); Console::WriteLine(L"Result is {0}", result); return?0; }
從這個例子中,我們可以簡單的管中窺豹的看看C++/CLI是在C++的基礎(chǔ)上擴充了一套語法,使其具有訪問.Net原始的功能,這里用到的有:
使用ref class聲明CLI引用類型(C#中的class)
使用^(例如如這里的String ^)來定義CLI引用類型
使用gcnew創(chuàng)建CLI的引用類型
具體的功能我將在后面的文章中再做介紹,MSDN中也有文檔詳細的介紹了這些語法:https://msdn.microsoft.com/zh-cn/library/ms235289.aspx
雖然C++/CLI同時具有兩者的功能,但它使得本就比較復雜的C++語法變得更加復雜了(特別是初期的版本,非常復雜,現(xiàn)在已經(jīng)簡化了不少了),并且長期沒有得到VisualStudio這宇宙第一IDE的較好支持(在VS2010的時候還不支持智能提示),是無法與擁有大量語法糖的C#比開發(fā)效率的。加上大多數(shù)需求場景可以通過分布式系統(tǒng)解決,這些都導致了它一直沒有得到太多的關(guān)注。但是,微軟還是在積極的改進它的,加上C++11的支持,現(xiàn)在已經(jīng)比之前好用多了,如果用在合適的位置,是絕對能讓你的開發(fā)如魚得水的。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++詳解默認參數(shù)的構(gòu)造函數(shù)及簡單實例代碼
這篇文章主要介紹了 C++詳解默認參數(shù)的構(gòu)造函數(shù)及簡單實例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02C語言數(shù)據(jù)結(jié)構(gòu)之堆排序的優(yōu)化算法
堆排序Heap?Sort就是利用堆進行排序的方法,下面這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)之堆排序的優(yōu)化算法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04用C語言實現(xiàn)從文本文件中讀取數(shù)據(jù)后進行排序的功能
這是一個十分可靠的程序,這個程序的查錯能力非常強悍。程序包含了文件操作,歸并排序和字符串輸入等多種技術(shù)。對大家學習C語言很有幫助,有需要的一起來看看。2016-08-08C語言編程數(shù)據(jù)結(jié)構(gòu)帶頭雙向循環(huán)鏈表全面詳解
這篇文章主要為大家介紹了C語言編程的數(shù)據(jù)結(jié)構(gòu)中帶頭雙向循環(huán)鏈表全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步,早日升職加薪2021-10-10