欢迎来到天天文库
浏览记录
ID:36206182
大小:3.24 MB
页数:426页
时间:2019-05-07
《c++.net程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++.NET程序设计(下)课件设计者:杜茂康2009年9月第9章托管C++程序设计第10章Windows窗体程序设计第11章窗体常用控件编程第12章.NET文件操作第9章托管C++程序设计托管C++能够充分应用.NETFramework提供的功能,并能允许用C++编写的模块与其它语言(如C#、VisualBasic等)编写的模块组合。本章主要介绍托管C++程序设计的基础知识,包括CLR、托管程序、垃圾回收、托管数据类型、程序集、托管类、托管继承、接口、抽象类、托管引用类型和值类型、委托和事件等概念和
2、技术。这些内容是Windows程序设计的基础,也是.NET环境中C#、VisualBasic等语言中的通用编程概念和技术。9.1CLR与托管程序1、CLR与托管程序CLR即公共语言运行库,它为.NET中的每种编程语言提供了一个共同的程序执行环境。在CLR中运行的代码称为托管代码,不在CLR中运行的代码称为非托管代码。9.1CLR与托管程序2、NET托管与非托管程序的关系VB、MC++、C#、J#....公共语言规范(CLS).NET3.5开发件WPF、WCF、WWF、WCFADO.NETWinForm…基
3、础类型(FCL)公共语言运行库(CLR)托管Web应用程序ASP.NET运行库Internet信息服务操作系统(OS)非托管应用程序MFC标准C++9.1CLR与托管程序2、CTS与元数据CTS即公共类型系统,其主要作用:定义了一套供所有.NET编程语言共用的.NET数据类型,以及这些类型的内部格式。这些类型中的大多数都符合CLS规范,可在多种托管语言中共用,实现语言的互操作性。建立一个支持跨语言集成、类型安全和高性能代码执行的框架。提供一个支持完整实现多种编程语言的面向对象的模型。定义各语言必须遵守的规
4、则,有助于确保用不同语言编写的对象能够交互作用9.1CLR与托管程序3、元数据元数据用于描述CLR在JIT编译MSIL、加载类、执行代码以及与本机领域进行交互时使用的运行库类型(类、接口和值类型)、字段、方法以及内部实现和布局信息。元数据包括在每个CLR组件中,并可供CLR、工具和服务使用。它通过定义统一的存储和检索类型信息的机制使语言互操作性成为可能。9.1CLR与托管程序4、CLS即公共语言规范,是CTS的子集,所有适用于CTS的规则都适用于CLS,它描述了一组基本的语言功能,并定义了程序语言间互操作
5、的规则,保障多语言互操作的实现。CLS是微软公司定义的所有基于.NETFramework语言必须支持的最小功能集。包括:变量的命名规则,定义了基本数据类型如Int32、Int64、Single、Double、Boolean等,禁止无符数值数据类型,指定了函数列表的规范,事件名和事件参数的定义和传递规范,禁止内存指针和函数指针等内容。9.1CLR与托管程序5.MSILMicrosoftIntermediateLanguageMicrosoft,中间语言.MSIL是CLR提供的一组可以有效地转换为本机代码且独
6、立于CPU的指令,要使代码可运行,还必须先将MSIL转换为特定于CPU的代码6.JIT编译CLR编译.NET程序时,会首先把它编译成MSIL代码。在该程序被执行时,那些被调用的函数代码会被CLR从MSIL代码编译成本机代码(即机器指令代码)执行,这种编译方式称为JIT(Just-in-time)编译。9.1CLR与托管程序7.垃圾回收在托管程序中,堆空间由CLR管理,称为托管堆。托管堆由程序员用gcnew分配,如同C++中的new一样,但托管堆不需要程序员用free之类的命令回收。当内存不足时,CLR就会
7、自动搜查托管堆中那些没有指针指向或被未被引用的对象(因其无用,徒占内存空间,故称之为垃圾),并释放它们,将它们所占据的内存空间归还系统,以被其它程序使用。这种方法称为垃圾回收,即GC(GarbageCollection)。9.1CLR与托管程序8、托管程序的执行过程VB.NET、C#、J#、MC++……中间语言代码(即MSIL代码)CLRWindowsUNIXLinux编译JIT编译9.2托管数据类型1、托管数据类型的概念和概况.NETFramework的CTS定义了一些类型,如Int16,Double,
8、Char等,其中的许多满足CLS规范,可用于.NET环境中的托管C++、C#、VisualBasic程序设计,称为托管数据类型。9.2托管数据类型2.值类型.NET也提供了许多类似于C++中的int、char、double的类型,如Int32、Char、Double等,这些类型在它自己的内存分配单元中存储数据,称为值类型。每个值类型变量都有自己的数据副本,在作为参数传递给函数时,值类型会将其值拷贝给参数变量,因此对一个值类型变
此文档下载收益归作者所有