程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 完美的C++:C++/CLI

完美的C++:C++/CLI

編輯:vc教程

什麼是C++/CLI呢?C++當然指的是Bjarne Stroustrup在BELL實驗室發明的C++語言,它實現了運行時取得速度和尺寸最佳化的靜態對象模型,然而它除了堆分配外不支持程序的動態修改,它准許無限地接近底層設備,但在程序運行過程中幾乎無法操作活動類型,也無法操作與程序相關聯的底層結構。Herb Sutter,C++/CLI的主要構造者之一,稱C++是一門“混凝土”式的語言。

  CLI指的是通用語言結構,一種支持動態組件編程模型的多重結構,在許多情況下,這代表了一個與C++對象模型完全顛倒了的模式。一個時實的軟件層,有效地執行系統,在底層操作系統與程序之間運行。操作底層的設備受到一定的限制,操作執行程序中的活動類型及與程序相關聯的下部結構得到了支持。反斜槓(/)代表C++和CLI的捆綁,這個捆綁帶來的細節問題是本文主要討論的問題。

  所以,“什麼是C++/CLI”問題的最初、最接近答案是:它是靜態C++對象模型到CLI的動態組件對象編程模型的捆綁。簡而言之,它就是你如何用C++在.NET中編程,而不是C#或Visual Basic.NET。象C#和CLI本身一樣,C++/CLI正在ECMA(歐洲計算機制造商協會)主持下進行標准化,以最終符合ISO標准。

  實時通用語言(CLR)是CLI的微軟版本,它非常適用於微軟的Windows操作系統,相似地,Visual C++2005是C++/CLI的實現。

  作為第二個近似的答案,我認為C++/CLI是.NET編程模式與C++的結合,正如以前將模板與C++結合起來產生的泛型編程。所有這種結合中,企業所擁有的C++的投資以及開發人員使用C++的經驗將得到保存,而這恰恰是使用C++/CLI進行開發的重要基礎。

  閱讀導航

  學習C++/CLI的方法
   在設計C++/CLI語言中涉及三個方面問題,這同樣貫徹於所有的其他程序開發語言:一是語言級的語法向底層通用類型系統(簡稱CTS)的映射;二是向程序開發人員提供的CLI的底層細節結構的級別選擇;三是超越CLI的直接支持,提供額外的功能性函數的選擇。

  從C++/CLI到CTS的映射?
   使用C++/CLI編程時間了解底層的CTS非常重要。CTS包括以下三種常用類的類型:

  1、多態引用類型,這正是對於所有繼承類所要使用的。

  2、非多態值類型,這用於實時高效的具體類型,例如數值類型。

  3、抽象的接口類型,這用於定義一個操作集,也可以用於實現接口的引用或值類型集合。

  CLI的細節
   設計一個CLI語言時第二個必須要考慮的問題是將CLI的底層執行模式融入到語言的細節級別。這種語言用於解決什麼問題?這種語言是否有必須的工具來解決這些問題?這種語言可能吸引什麼樣的程序開發人員?

  存在的問題
   在垃圾收集器掃描緊縮狀態下,位於托管堆上的任何對象非常可能面對重新定位問題。指向對象的指針可以實時跟蹤並修改。開發人員不能自己手動跟蹤,所以,如果你獲許取得一個可能位於托管堆上的值類型的地址時,除了本地指針外,還需要有一個跟蹤形態的指針。

  額外增加的功能
   在垃圾收集器掃描緊縮狀態下,位於托管堆上的任何對象非常可能面對重新定位問題。指向對象的指針可以實時跟蹤並修改。開發人員不能自己手動跟蹤,所以,如果你獲許取得一個可能位於托管堆上的值類型的地址時,除了本地指針外,還需要有一個跟蹤形態的指針。

  小結

  C++/CLI代表托管與本地編程的結合,這種綜合已經通過元級相對獨立但又相互平等地組件和二進制元素得到了完成,包括混合模式(本地和CTS類型的元級混合,還有一個本地及CLI對象文件的二進制混合),純模式(本地和CTS類型的源代碼級混合,所有的都被編譯為CLI對象文件),本地分類(可以通過一個特定的打包類來保持CTS類型),和CTS分類(可以保持本地類型為指針)。

  當然,C++/CLI開發人員也可以單獨使用CLI類型來編程,並通過這種方式來提供伺服狀態下的可校驗代碼,例如可以作為SQL Server2005的一個SQL存儲過程。

  現在,還是回到這個問題上來,什麼是C++/CLI?它是進行.NET編程模式的最佳切入點。對於C++/CLI,有一個來自C++的遷移路徑,它不僅包含C++的底層基礎,而且也需要C++編程經驗,對於這些,我感到非常滿意。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved