What's NEW in C++/CLI Language

作为同时适用于本地/托管环境的新一代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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 编译器有问题,Android Studio 3.0 Beta 2发布:解决编译器bug

5月18日&#xff0c;IT之家曾经报道&#xff0c;谷歌发布了Android Studio 3.0的测试版&#xff0c;新增了对Kotlin语言的支持&#xff0c;而日前&#xff0c;谷歌发布了Android Studio 3.0的Beta 2版本。此版本并无新功能加入&#xff0c;不过修复了一个困扰开发人员的bug&…

Kali安装magescan评估工具

Magento &#xff08;麦进斗&#xff09; 是一套专业开源的电子商务系统。Magento设计得非常灵活&#xff0c;具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。其面向企业级应用&#xff0c;可处理各方面的需求&#xff0c;以及建设一个多种用途和适用面的电子…

领域驱动设计在马蜂窝优惠中心重构中的实践

前言 正如领域驱动设计之父 Eric Evans 所著一书的书名所述&#xff0c;领域驱动设计&#xff08;Domain Driven Design&#xff09;是一种软件核心复杂性应对之道。 在我们解决现实业务问题时&#xff0c;会面对非常复杂的业务逻辑。即使是同一个事物&#xff0c;在多个子业务…

将继续深入学习网络编程

一段时间了&#xff0c;已经可以熟练在Java使用Socket和nio编写服务器应用程序&#xff0c;对一些流行的nio应用框架也有了较深的了解&#xff0c;也自己做了一些实现&#xff0c;并且应用到实践中去。我想&#xff0c;我需要从三个方面继续深入学习网络编程&#xff1a;1、网络…

鸿蒙系统发布会是什么时候,鸿蒙系统2.0发布时间是什么时候?或将与EMUI11一同发布!...

对于鸿蒙系统OS一直以来就备受大家的关注&#xff0c;作为华为自主研发的操作系统&#xff0c;它是华为之光&#xff01;很多人翘首盼望着它的到来&#xff0c;自1.0版本后鸿蒙系统2.0发布时间似乎确定下来了&#xff01;届时会与EMUI11一同向大家介绍&#xff01;今日&#xf…

第二周web作业1:简单的注册表单

<!DOCTYPE HTML><html> <head> <meta charset"utf-8"> <title>black_tea home</title> </head> <body> <h1>注册</h1> <form action""> <p>用户名&#xff1a;<input t…

HZNU 2019 Summer training 8

A - Petya and Origami CodeForces - 1080A 题意&#xff1a;制造一份邀请函需要2份a物品&#xff0c;5份b物品&#xff0c;8份c物品&#xff0c;一个盒子里面有k份物品&#xff08;可以为a或b或c&#xff09;问你制造n份邀请函需要用多少个盒子 题解&#xff1a;加起来就行了…

OGRE分析之设计模式

这段时间静下心来看了一下OGRE的源代码&#xff0c;有一点心得&#xff0c;于是写下来形成如下的几篇零散的文章&#xff1a; 阅读OGRE分析之设计模式&#xff08;四&#xff09; 摘要:Iterator Observer Strategy Template Method OGRE分析之设计模式&#xff08;三&#xff0…

android ota更新app,企业 OTA 更新  |  Android 开源项目  |  Android Open Source Project

Android 兼容性定义文档 (CDD) 可更新软件要求设备实现 SystemUpdatePolicy 类。SystemUpdatePolicy 可让设备所有者 (DO) 应用(如果存在)控制系统更新的安装。通知设备所有者无线下载 (OTA) 客户端必须使用系统 API 将传入的 OTA 更新通知给设备所有者应用。OTA 客户端还必须包…

利用Flutter写一个跨平台的果核APP(3)——网络请求

前言 紧接上文界面篇&#xff0c;上文中在构建布局的时候因为是直接将文字图片显示出来的&#xff0c;所以消息类Message&#xff0c;和日知录类One都是采用的无状态的StatelessWidget类&#xff0c;这次我们需要调用接口&#xff0c;然后将返回的数据动态的显示到那两个控件上…

2019 7 12

ICMP 协议封装 ICMP 协议属于网络层协议 ICMP 数据的封装过程 ICMP头部 ICMP数据 IP头部 上层数据&#xff08;ICMP报文&#xff09; 帧头部 上 层 数 据 帧尾部 ping命令 C&#xff1a;>ping [t] [-l 字节数] [-i] ip_address | target…

android layer-list,Android layer-list的属性和使用具体解释

Android layer-list的属性和使用具体解释。layer-list是用来多个图层堆叠显示的&#xff0c;借这个特性能够做一些特别的效果(比方&#xff1a;阴影、以下的效果等)&#xff0c;也能够投机取巧。1.代码片2.布局代码和效果图 (一定要注意在使用RadioGroup的时候要记的写RadioBut…

上传文件夹

前台<% Page language"c#" Codebehind"ZJSJKSC.aspx.cs" AutoEventWireup"false" Inherits"DDTYDB.Module.WJGL.ZJSJKSC" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <…

关于swiper的tab(选项卡)中设置了autoHeight没有效果解决

autoHeight属性使用看官网的示例&#xff1a;https://www.swiper.com.cn/api/parameters/294.html swiper的选项卡结构查看&#xff1a;https://www.swiper.com.cn/demo/indexsample/ swiper的tab的一般DOM节点为&#xff1a; <body> <div class"tabs"> …

UrlEncode

ASP.NET 快速入门教程/使用服务器控件/执行页导航&#xff08;方案 2&#xff09;里有两段代码不是很清楚。 UrlEncode前面的相关内容为何有点不同呢&#xff1f; 源页面向目标页面发送参数的代码。<script language"C#" runat"server"> voi…

android html邮件 messagecompose,android email 转发附件丢失问题

在MessageCompose.java中将else if (ACTION_REPLY.equals(mAction)- || ACTION_REPLY_ALL.equals(mAction)- || ACTION_FORWARD.equals(mAction)) {}中ACTION_FORWARD提取成&#xff1a;else if(ACTION_FORWARD.equals(mAction)) …

数据库字段属性配置工具界面[用于代码生成]

在CodeSmith中为了实现对数据库中表字段的选择和针对字段来设置属性&#xff0c;决定用XML文件作为中间数据的交换方式&#xff0c;在CodeSmith中读取数据库对象的信息不再使用SchemaExplorer来读取&#xff0c;而是转为直接对XML文件的读取。<?xml:namespace prefix o ns…

Codeforces 892E Envy

问题描述 小Q正在玩一个叠塔的游戏&#xff0c;游戏的目标是叠出尽可能高的塔。在游戏中&#xff0c;一共有n张矩形卡片&#xff0c;其中第i张卡片的 长度为a_i&#xff0c;宽度为b_i。小Q需要把所有卡片按一定顺序叠成一座塔&#xff0c;要求对于任意一个矩形&#xff0c;它的…

Zookeeper环境安装

源码包下载&#xff1a; http://archive.apache.org/dist/zookeeper/zookeeper-3.4.10 集群环境&#xff1a; master 192.168.1.99 slave1 192.168.1.100 slave2 192.168.1.101 下载安装包&#xff1a; # Mater wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.1…

鸿蒙系统用没有安卓的代码,套壳?不存在!纯鸿蒙系统不含任何安卓代码,其他手机厂商可使用...

众所周知&#xff0c;华为的鸿蒙系统已经应用于许多华为机型上&#xff0c;例如Mate40、MataX2等&#xff0c;同时不少家电厂商也和华为合作推出了基于鸿蒙的终端设备&#xff0c;比如美的、老板等。那么&#xff0c;和华为处于竞争关系的手机厂商可以使用鸿蒙系统吗&#xff1…