完美的C++:C++/CLI

什么是C++/CLI呢?C++当然指的是Bjarne Stroustrup在BELL实验室发明的C++语言,它实现了运行时取得速度和尺寸最佳化的静态对象模型,然而它除了堆分配外不支持程序的动态修改,它准许无限地接近底层设备,但在程序运行过程中几乎无法操作活动类型,也无法操作与程序相关联的底层结构。Herb Sutter,C++/CLI的主要构造者之一,称C++是一门“混凝土”式的语言。

  CLI指的是通用语言结构,一种支持动态组件编程模型的多重结构,在许多情况下,这代表了一个与C++对象模型完全颠倒了的模式。一个时实的软件层,有效地执行系统,在底层操作系统与程序之间运行。操作底层的设备受到一定的限制,操作执行程序中的活动类型及与程序相关联的下部结构得到了支持。反斜杠(/)代表C++和CLI的捆绑,这个捆绑带来的细节问题是本文主要讨论的问题。

  所以,“什么是C++/CLI”问题的最初、最接近答案是:它是静态C++对象模型到CLI的动态组件对象编程模型的捆绑。简而言之,它就是你如何用C++在.NET中编程,而不是C#或Visual Basic.NET。象C#和CLI本身一样,C++/CLI正在ECMA(欧洲计算机制造商协会)主持下进行标准化,以最终符合ISO标准。

  实时通用语言(CLR)是CLI的微软版本,它非常适用于微软的Windows操作系统,相似地,Visual C++2005是C++/CLI的实现。

  作为第二个近似的答案,我认为C++/CLI是.NET编程模式与C++的结合,正如以前将模板与C++结合起来产生的泛型编程。所有这种结合中,企业所拥有的C++的投资以及开发人员使用C++的经验将得到保存,而这恰恰是使用C++/CLI进行开发的重要基础。

  阅读导航

  学习C++/CLI的方法
   在设计C++/CLI语言中涉及三个方面问题,这同样贯彻于所有的其他程序开发语言:一是语言级的语法向底层通用类型系统(简称CTS)的映射;二是向程序开发人员提供的CLI的底层细节结构的级别选择;三是超越CLI的直接支持,提供额外的功能性函数的选择。

  从C++/CLI到CTS的映射?
   使用C++/CLI编程时间了解底层的CTS非常重要。CTS包括以下三种常用类的类型:

  1、多态引用类型,这正是对于所有继承类所要使用的。

  2、非多态值类型,这用于实时高效的具体类型,例如数值类型。

  3、抽象的接口类型,这用于定义一个操作集,也可以用于实现接口的引用或值类型集合。

  CLI的细节
   设计一个CLI语言时第二个必须要考虑的问题是将CLI的底层执行模式融入到语言的细节级别。这种语言用于解决什么问题?这种语言是否有必须的工具来解决这些问题?这种语言可能吸引什么样的程序开发人员?

  存在的问题
   在垃圾收集器扫描紧缩状态下,位于托管堆上的任何对象非常可能面对重新定位问题。指向对象的指针可以实时跟踪并修改。开发人员不能自己手动跟踪,所以,如果你获许取得一个可能位于托管堆上的值类型的地址时,除了本地指针外,还需要有一个跟踪形态的指针。

  额外增加的功能
   在垃圾收集器扫描紧缩状态下,位于托管堆上的任何对象非常可能面对重新定位问题。指向对象的指针可以实时跟踪并修改。开发人员不能自己手动跟踪,所以,如果你获许取得一个可能位于托管堆上的值类型的地址时,除了本地指针外,还需要有一个跟踪形态的指针。

  小结

  C++/CLI代表托管与本地编程的结合,这种综合已经通过元级相对独立但又相互平等地组件和二进制元素得到了完成,包括混合模式(本地和CTS类型的元级混合,还有一个本地及CLI对象文件的二进制混合),纯模式(本地和CTS类型的源代码级混合,所有的都被编译为CLI对象文件),本地分类(可以通过一个特定的打包类来保持CTS类型),和CTS分类(可以保持本地类型为指针)。

  当然,C++/CLI开发人员也可以单独使用CLI类型来编程,并通过这种方式来提供伺服状态下的可校验代码,例如可以作为SQL Server2005的一个SQL存储过程。

  现在,还是回到这个问题上来,什么是C++/CLI?它是进行.NET编程模式的最佳切入点。对于C++/CLI,有一个来自C++的迁移路径,它不仅包含C++的底层基础,而且也需要C++编程经验,对于这些,我感到非常满意。

时间: 2024-07-29 00:08:52

完美的C++:C++/CLI的相关文章

C++/CLI中栈对象的设计问题

C++/CLI中新推出的自动确定性资源回收(Automatic deterministic destruction)被视 为一个优秀的设计.是使用所谓C++/CLI这个"新瓶"来装Bjarne Stroustrup提 出的RAII这个"旧酒". 这的确不错,相对而言,这个比C#中的using 关键字(dispose模式),以及Java中的 hard-coded的dispose方法都要好许多.这个特性是由C++/CLI中栈对象(局部对象)来提供 的,局部对象本身没错,

专家支招:如何利用Plesk搭建完美全能开发环境

在如此快节奏发展的时代,无论是站长.网页设计托管还是企业网站管理员都不愿意将大量时间精力贡献在搭建服务器环境上,过程复杂繁琐不说还往往暗藏漏洞.如果有一款管理型服务器,不仅自带全能开发环境,而且配以操纵自如的可视化操作界面,不就能跃过技术门槛,快速高效开展核心业务了? 其实,只要在服务器上安装一个Plesk操作面板,所有开发环境便可手到擒来.Plesk不仅包括多个版本的PHP,而且可以自如管理 Ruby,Python,Node.js,Java, Nigix,Git等等.最新推出的Plesk On

Mac系统完美安装PHP7详细教程

PHP发布5.6版本后,一直在等,等到了跨越式的PHP7版本,那么问题来了,版本6到哪去了?根据官方的说法,现在的PHP7要比PHP5.6快一倍,有的朋友说快十倍,反正是更快了,本人习惯Mac系统,因此根本Mac系统详细讲解如何安装PHP7! 一般有好几种方法来安装. 一,我们可以去官网上下源码去编译,我也尝试这种方法了,但是最后编译安装make test,这一步的时候,报错,于是就大胆尝试第二种方法吧! 二,使用第三方包homebrew来安装,非常迅速有效! 安装教程: 1.首先我们需要安装H

PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)

源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkPHP框架(3.2) Redis数据库:测试数据回调函数:通过一个Redis的自增incr来测试异步脚本执行的次数和访问的时间(平时都是用Redis测试写日志的) 编辑器:Visual Studio Code (CLI运行环境好看点) PHP 的命令行模式       从版本 4.3.0 开始,PHP

最完美的恢复win8开始按钮方法!

大家好,经过一段时间的测试,和身边朋友的使用情况的反馈,实践证明,这是目前或者将来最好的恢复win8开始的解决方案!! 1.首先声明:看了图感觉完美的就给个评分(是论坛给的不会扣除个人的PB)或者发表一些意见,我非常欢迎大家.其次然后你下载后使用确实好或者有水土不服的,也来吐槽一下,以便他人借鉴. 2.给大家看一个使用效果 3.全部软件设置界面,非常人性化,和win8完美融合 4,最重要的一点就是,用这个软件可以很直接的绕过win8开始屏而进入桌面

CLI+Terraform简化资源管理的模板编写

Terraform是一个比较强大的自动化资源编排管理工具,通过模板描述资源,通过apply命令创建/更新资源.详细的使用方法及特性可以参见公众号中关于Terraform的其他文章了解.本文将主要讲解如何利用CLI+Terraform简化模板的编写. Terraform的模板由几大结构组成:资源(resource).变量(variable).输出(output),他还有一个很重量级的结构:数据源(data).数据源是用来过滤资源中parameter的可选项的,举个例子,ECS的实例类型(insta

完美实现仿QQ空间评论回复特效

  这篇文章主要介绍了完美实现仿QQ空间评论回复特效,非常的实用,附上实例代码给大家,有需要的小伙伴参考下吧. 评论回复是个很常见的东西,但是各大网站实现的方式却不尽相同.大体上有两种方式 1. 像优酷这种最常见,在输入框中@要回复的人,这种方式下,用户可以修改@. 新浪微博则是在这个基础上,弹出好友菜单.这种方式的好处是不需要任何js,css处理兼容. 2. 像qq空间这种,对回复的人整个删除.本屌感觉这种方式比较好,但这种方式有些兼容性上的细节,这个后面会详细说明. 事实上,qq空间的这种实

使用 Apache Commons CLI 开发命令行工具示例

概念说明 Apache Commons CLI 简介         Apache Commons CLI 是 Apache 下面的一个解析命令行输入的工具包,该工具包还提供了自动生成输出帮助文档的功能.     Apache Commons CLI 支持多种输入参数格式,主要支持的格式有以下几种: POSIX(Portable Operating System Interface of Unix)中的参数形式,例如 tar -zxvf foo.tar.gz GNU 中的长参数形式,例如 du

10分钟打造完美安全的Windows操作系统

当今信息时代,最为重要的便是个人安全问题,这也是最为迫切.急需解决的问题.一个稳定的操作系统,于网络中遨游,是很美妙的是事情. 有的朋友电脑出了故障,重装系统,然后安全问题可能有所闪失,本文就Windows操作系统中一些低级的基本问题做一些引导,相信能做好这些,自己的爱机电脑也就多一份安全保障吧. 目前市场使用份额最大的便是Windows操作系统,在重装系统后,首选安装驱动.有的系统自带驱动,如GHOST XP,系统安装成功,驱动也随之安装了.这里,我推荐安装深度XP系统,软件功能齐全,如果你喜