程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 托管擴展 C++ 遷移到 C++/CLI

托管擴展 C++ 遷移到 C++/CLI

編輯:C++入門知識

對於C++/CLI代表 ISO-C++標准語言的一個動態編程泛型擴展在原版語言設計中有許多,我們覺得在修訂版語言設計 (V2) 中已經修正了這些弱點,下面進行說明學習研究。。。

 

本文列舉了 V1 版本語言的功能和它們在 V2 版本中的對應功能如果存在);並指出了其對應功能不存在的構造。對於有興趣的讀者,可以查看附錄中提供新語言設計的擴展原理。另外,一個源代碼級別的轉換工具 (mscfront) 正在開發中,而且可能在 C++/CLI的發布版中提供給希望將 V1 代碼自動移植到新語言設計的人。

 

本文分為五個章節加一個附錄。第一節討論語言關鍵字的主要問題,特別是雙下劃線的移除以及與上下文相關和由空格分隔的關鍵字。第二節著眼於托管類型的變化 — 特別是托管引用類型和數組。還可以在這裡找到有關確定性終結語義 deterministic finalization) 的詳細討論。關於類成員的變化,例如屬性、索引屬性和操作符,是第三節的重點。第四節著眼於 CLI 枚舉、內部和釘住指針的語法變化。它也討論了許多可觀的語義變化,例如隱式裝箱的引入、CLI枚舉的變化,和對值類中默認構造函數的支持的移除。第五節有點像大雜燴 — 亂七八糟的雜項。討論了類型轉換符號、字符串字符的行為和參數數組。

 

1. 語言關鍵字

 

原版到修訂版語言設計的一個重要轉換是在所有關鍵字中去掉雙下劃線。舉例來說,一個屬性現在被聲明為 property而不是 __property。在原版語言設計中使用雙下劃線前綴的兩個主要原因是:

 

1.

這是提供符合 ISO-C++標准的本地擴展的一致性方法。原版語言設計的一個主要目標就是不引入與標准語言的不兼容性,例如新的關鍵字和標記。這個原因很大程度上也推動了對聲明托管引用類型的對象的指針語法的選擇。

2.

雙下劃線的使用,除了兼容性方面的原因之外,也是一個不會對有舊代碼基礎的用戶造成影響的合理保證。這是原版語言設計的第二主要目標。

 

這樣的話,為什麼我們移除雙下劃線並且引入了一些新的標記)?不是的,這並不代表我們不再考慮和標准保持一致!

 

我們繼續致力於和標准一致。盡管如此,我們意識到對 CLI動態對象模型的支持表現出了一種全新的強大的編程范型。我們在原版語言設計上的經驗以及設計與發展 C++ 語言本身的經驗使我們確信,對這個新范型的支持需要它自己的高級關鍵字和標記。我們想提供一個該新范型的一流表達方式,整合它並且支持標准語言。我們希望您會感受到修訂版語言設計提供了對這兩種截然不同的對象模型的一流的編程體驗。

 

類似的,我們很關心最小化這些新的關鍵字的對現有代碼可能造成的沖擊。這是用與上下文相關和由空格分隔的關鍵字來解決的。在我們著眼於實際語言語法的修訂之前,讓我們試試搞清楚這兩個特別關鍵字的特點。

 

一個與上下文相關的關鍵字在特定的程序上下文中有特殊的含義。例如,在通常的程序中,sealed 是一個普通標識符。但是,在一個托管引用類類型的聲明部分,它就是類聲明上下文中的一個關鍵字。這使得在語言中引入一個新的關鍵字的潛在影響降到最低程度,我們認為,C++/CLI這對已經擁有代碼基的用戶非常重要。同時,它允許新功能的使用者獲得一流的新增語言功能的體驗 — 我們認為在原版語言設計中缺少這些因素。我們將在 2.1.2節中看到 sealed用法的示例。

  1. 如何正確編寫C++項目開發編寫項目計劃書
  2. C++庫函數進行學習探索總結筆記
  3. 深度演示C++語言的種種高安全性
  4. 詳細介紹如何准確無誤的編寫C++語言
  5. 深度演示C++語言的種種高安全性

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