首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

完美的 C++:深度剖析 C++/CLI 語言本質

     編輯:關於C++

什麼是 C++/CLI?

C++ 實現靜態物件模型,追求速度與大小最佳化,僅支援堆積配置的動態修改,允許無限接觸底層硬體,但難以操作執行期的活動型別與程式相關結構。Herb Sutter 稱之為「混凝土」語言。

CLI (Common Language Infrastructure) 支援動態元件程式模型,與 C++ 物件模型截然不同:即時軟體層在作業系統與程式間運行,限制底層硬體存取,但支援操作活動型別與程式結構。/ 代表兩者的綁定,本文探討此綁定的細節。

簡言之:C++/CLI 是靜態 C++ 物件模型到 CLI 動態元件模型的綁定,亦即如何用 C++ 在 .NET 中編程。同 C# 與 CLI 一樣,C++/CLI 正在 ECMA 標準化進程中。CLR 是 CLI 的微軟實現,Visual C++ 2005 是 C++/CLI 的實現。

第二層解讀:企業資產的保護

C++/CLI 是 .NET 程式模式與 C++ 的結合,如同模板與 C++ 結合產生泛型程式設計。此結合保留了企業的 C++ 投資與開發者經驗,是採用 C++/CLI 開發的重要基礎。

學習 C++/CLI 的三大核心議題

  1. 語言到 CTS 的映射:CTS 包含多態參考型別 (繼承體系)、非多態實值型別 (數值型別)、抽象介面型別 (作業集合定義)。
  2. CLI 執行模型的語言層級整合:語言解決什麼問題?提供什麼工具?吸引什麼開發者?
  3. 超越 CLI 的額外功能:提供超出 CLI 直接支援的功能性選擇。

核心技術挑戰與解決方案

物件重新定位與追蹤指標

在 GC 掃描壓縮時,托管堆上物件可能重新定位。原生指標無法自動追蹤,開發者也無法手動追蹤。C++/CLI 提供 內部指標 (interior pointer) 與 追蹤參考 (tracking reference),讓編譯器/運行時自動更新指向托管物件的參考。

混合模式與純模式

  • 混合模式:原生與 CTS 型別的中繼資料層級混合,原生與 CLI 物件檔的二進位混合。
  • 純模式:原生與 CTS 型別的原始碼層級混合,全部編譯為 CLI 物件檔。
  • 原生封裝:透過特定封裝類別保持 CTS 型別。
  • CTS 封裝:保持原生型別為指標。

結語

C++/CLI 代表托管與原生程式設計的綜合,提供無與倫比的威力與優雅語法。開發者可單獨使用 CLI 型別編寫可驗證代碼 (如 SQL Server 2005 預存程序),也可充分利用 C++ 遷移路徑,在不犧牲簡潔性、編程效率、執行效率的前提下,編寫豐富的 .NET 應用程式。對於 C++ 開發者,這是進行 .NET 程式設計的最佳切入點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved