作为同时适用于本地/托管环境的新一代C++语言扩充,C++/CLI的定位与原有的Managed Extensions for C++基本一致,在CLR 2.0环境中,它主要承载了如下5个使命:

A.  源码级集成 (本地/托管/混合代码编译)
B.  对象模型集成 (本地类型/指针、CLR类型/指针等)
C.  组件模型集成 (元数据支持、属性-事件语义、P/Invoke/COM Interop/C++ Interop集成等)
D.  泛型及模板集成 (传统Template、托管Template、Generics、泛型集合类)
E.  大型框架集成 (STL.net等)

由于目前除了ECMA标准文本之外,还没有一本关于C++/CLI的入门专著,因此,我根据自己的理解对其所引入的新特性进行了简要的总结和分类,其详细内容均可在MSDN中按图索骥。在理解其目标定位的前提之下,从语言特性的角度来看,C++/CLI对ISO C++的扩充主要包括如下3方面,其中的下划线部分是目前网上谈论得比较多的dd:

1. Object-Model related
1.1 Memory Managements
     ·managed handle & tracking reference
     ·reference type / value type / interface
     ·boxing / unboxing / stack sementics     ·interior_ptr<T> / pin_ptr<T>
1.2 Resource Managements
     ·IDispose pattern
     ·destructor / finalizer 
     ·static constructor
1.3 Managed Array
     ·multi-dimensional array
     ·jagged array
1.4 New modifiers
     ·class-modifiers: abstract / sealed
     ·member function-modifiers: virtual / new / override

2. Component-Model related
2.1 Delegate & Event
     ·bound delegate / unbound delegate 
     ·event pattern / composing delegates
     ·accessor of event: add / remove / raise
2.2 Managed Property
     ·accessors: getter / setter
     ·indexed property
     ·multi-dimensional property
2.3 Exceptional Processing
     ·managed exception
     ·wraps of SEHException

3. Templates & Generics related
3.1 Generics
     ·generic functions / classes / interfaces / delegates
     ·explicit constraints of type parameters based on base-class & interface
     ·classes of generic collections (what, why, how)
3.2 Managed Template
     ·differences between templates and generics
     ·combining templates and generics
3.3 'for each ... in' statement

最后以blog风格废话几句,嗯... 总体感觉C++/CLI语义比MCPP更加清晰、规范,也更简练,但并没有绝大多数人强调的那般夸张,比方说我就不认为__box是多余的,新引入的隐式boxing和栈对象语义反倒还更容易鼓励程序员忘却装箱性能损耗、妨碍优化并制造混乱...也许我从来没有真正觉得MCPP麻烦过... 尽管C++/CLI已经成为了一门现实中的标准语言,尽管它不断地追求着文法的完备和完美,但还是存在着许多令人觉得不自然的地方,也许这应当归结成为:“微软的产品,凡属是不好用的,都是那些连微软自己都没想清楚的”。
不管怎么说,.Net发展至今,无论是何种语言,语言本身已不再重要(apl.net/ocaml.net/oberon.net/haskell.net,who care?),重要的是语言对CLR及组件环境的支持和理解,或许对我们而言,处于托管/非托管边界上的C++/CLI所揭示的CLR思想和设计理念,比它本身所具备的语法特性更为关键。

转载于:https://www.cnblogs.com/neoragex2002/archive/2005/12/04/290549.html

What's NEW in C++/CLI Language相关推荐

  1. C++/CLI中的资源清理(Destructor,Finalizer)

    本文将分成三部分,他们分别是引言.Destructor,Finalizer的语法表示.如何保证Destructor,Finalizer与其他语言兼容.   一. 引言    资源是一个很大的范畴,先让 ...

  2. [Share].NET Reflector Add-Ins

    今天在这里看到一份关于Reflector的非常好的资源,这里列出几乎所有的Reflector的add-in,具体看下面列表. 下载 .NET Reflector here . Add-Ins Code ...

  3. 立足现实 与时俱进:C++ 1991-2006 reference

    引用: [1] David Abrahams: Exception-Safety in Generic Components.M. Jazayeri, R. Loos, D. Musser (eds. ...

  4. 开发工具合集专题《管理工具,DoxygenAPI文档自动生成》

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C.C++.Java.Objective-C和IDL语言,部分支持PHP.C#.注释的语法与Qt-Doc.KDoc和J ...

  5. [经验总结]我的Doxygen配置文件

    #  Doxygen是个非常优秀的自动化生成代码文档的开源软件,大约零六年开始使用这个软件,经常用这个软件来帮我分析源代码. # 最近在Windows平台上做开发,也在Windows平台配置了一份Do ...

  6. reflector 插件_Reflector插件和PowerShell语言对Reflector的支持

    reflector 插件 Hopefully if you've been coding .NET for a while, someone has shown you Reflector, Lutz ...

  7. .NET Reflector 资料收集

    Introduction to the .NET Reflector Add-In Model 原文地址 Reflector add-in 是一个dll/exe 的assembly文件,里面有一个包, ...

  8. Visual C++中删除托管对象、包装库及其他

    本文将给大家讲解一下 Visual C++中如何 删除托管对象.包装库及其他,大家在实际开发中可以做个参考. 问:能否告诉我,在托管 C++ 中,使用 delete 操作符销毁托管对象是否安全? Be ...

  9. C++/CLI思辨录之内部指针的两面性

    在本文中,我将解释为什么使用本地指针来管理对象.原因在于对象是以垃圾收集器移动的.所以,当对象移动时,本地指针就变成无效的.所以,如果你想取得一个托管对象的本地指针,你就会遇到一个编译错.下面的代码显 ...

最新文章

  1. 优达学城《DeepLearning》2-5:风格迁移
  2. SpringMVC 学习系列 (4) 之 数据绑定 -1
  3. android UI设计时须要注意遵循的设计原则
  4. android自动跑马灯,Android-最强跑马灯
  5. Oracle ODP.NET数据库访问连接字符串
  6. LeetCode 1249. 移除无效的括号(栈+set / deque)
  7. IIS7 如何设置读取、脚本和可执行文件的执行权限
  8. java编程——图片旋转
  9. 2019券业IT投入突破200亿!国君华泰中信均超10亿,新评价标准下东财、平安、东方、安信、中泰加分最多
  10. 新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧
  11. markdown如何设置图片大小_Markdown 调整图片位置与大小
  12. python枚举算法流程图_python机器学习十大算法案例
  13. 显示器html看电视声音,电脑连接HDMI显示器后没声音(无需外置转换线)的解决方法...
  14. ReversingWithLena——01. Olly + assembler + patching a basic reverseme
  15. ti-sdk-evm-am335x-05.07 uboot分析(MLO跳转到u-boot之前)
  16. 计算机系统变更注意事项,电脑更换cpu注意事项
  17. 利用python分析电商_基于Word2Vec+SVM对电商的评论数据进行情感分析
  18. ThinkPad T480 Win10系统键盘失灵
  19. 第17课 项目成本管理
  20. 传奇登录器打不开的四种原因

热门文章

  1. javasript --- 一个日期规范(x秒前,x分前...)
  2. Oracle密码过期问题 ORA-28001:the password has expired
  3. 顶级数据库行会Percona阿里全面解析下一代云数据库技术
  4. SVN学习(二)——SVN 提交、更新、解决冲突等操作步骤
  5. 批量下载小说网站上的小说(python爬虫)
  6. android获取控件宽度高度
  7. 淘宝跨域获取Cookie分析
  8. 空间索引不能用analyze进行分析
  9. SQL server中DateTime类型字段如何赋值零?
  10. C#与halcon联合开发——内存溢出