相關介紹
託管
C++並非獨立存在的
程式語言,而僅僅是微軟對C++的一個語法擴展,允許C++
程式設計師在.NET框架和
CLR的基礎上進行託管編程。與
C#和
Visual Basic .NET相比,其主要優點是舊代碼可以比較快地移植到新的平台上,而且即使不完全重寫代碼,也可以通過
互操作在同一個
模組中無縫集成
託管和
非託管代碼,從新的.Net框架中獲益。.Net框架封裝了大量的API,例如網路訪問、字元串操作、數據訪問、XML服務、圖形界面控制項庫、郵件服務、加密服務、檔案輸入/輸出,甚至是
WMI管理,也使得應用程式員可以編寫更加簡潔的代碼。時下只有託管C++及其後繼者
C++/CLI可以做到無縫集成託管和非託管代碼,而在
託管代碼中調用
COM的速度又相當慢,所以經常被用於其他語言和
非託管代碼之間的橋樑。
託管C++允許
程式設計師編寫託管代碼,
記憶體管理的工作可以讓
CLR去自動處理,訪問時也增加了類型檢查,減少了
緩衝區溢出和
記憶體泄漏的危險,增加了程式的穩定性,但是在性能敏感的套用中,龐大的.NET框架和緩慢的自動記憶體管理並不是必要的,傳統非託管代碼仍然是一些人的首選。
與此同時,託管
C++引入了大量的關鍵字和語義轉換,減少了代碼的可讀性和明確性。缺少在很多語言中都支持的泛型和for each語句也增加了其他語言的
程式設計師轉向託管C++的困難。在其後繼者
C++/CLI中
泛型和for each語句才被支持。
重大改變
以下列出面向對象程式設計與 unmanaged C++之間的差異性。 一個新的前置處理引導(preprocessor directive)
#using <mscorlib.dll>
這是必須的。
此外 #using directives 必須用 namespace 的方法來 import 更多的庫(libraries),像是 Base Class Library,例如:
#using <System.Windows.Forms.dll>
以及
using namespace System::Windows::Forms;
來使用 Windows Forms。
/clr enables any code referencing the .NET Framework to be compiled as
CIL。
軟體對比
以下列出 Managed C++ 與其它程式語言在類似觀念上的差異。
缺點
Java 幾乎可支持所有的平台,而 Managed C++ 僅可以在 Windows 或其它實現出 .NET Framework 的平台上運行。
Java 代碼複雜度較小,且易於閱讀,並提供有代碼使用檔案可供參考。而 Managed C++ 則無。 (C++/CLI 於 Visual C++ .NET 2005 中已有支持)
Java 有許多開發工具與解答(solutions)可提供開發者參考,Managed C++ 僅能使用 Visual Studio .NET。不過,Managed C++ applications 可用免費的 Visual C++ Toolkit 2003 編譯。
Java 的例外機制是可以檢查的(checked), Managed C++ 則無法檢查。 (根據程式不同這也可能是個優點)
優點
缺點