AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

Visual C++ .NET编程:托管C++概述

51自学网 2015-08-30 http://www.wanshiok.com

  2、用托管C++可以开发.NET框架的项目类型

  使用托管C++应该是C++程序员编写.NET框架应用程序最好的一种选择,通过集成在Visual Studio.NET开发环境的托管C++向导,我们可以创建以下几种开发.NET框架的项目类型:

  (1) 托管C++应用程序:用来创建一个支持托管扩展的单独C++应用程序,使用它还可创建任何类型的应用程序,包括.NET框架客户应用程序。

  (2) 托管C++类库:用来创建一个支持托管扩展的C++DLL,使用它可以生成一个能被.NET框架应用程序调用的托管类型的组件。

  (3) 托管C++空项目:用来创建一个空的托管项目,该项目只含有支持托管扩展的正确编译和链接的开关选项。使用它能将一个已有的C++源文件进入到一个托管环境中。

  (4) 托管C++ Web服务:用于创建两个项目,一个是C++托管扩展项目,另一个是部署项目。

  3、托管C++与标准C++的主要区别

  尽管托管C++是从标准C++建立而来的,但它与标准C++有着本质上的区别,这主要体现在以下几个方面:

  (1) 广泛采用“名称空间”(namespace)

  名称空间是类型的一种逻辑命名方案,.NET使用该命名方案用于将类型按相关功能的逻辑类别进行分组,利用名称空间可以使开发人员更容易在代码中浏览和引用类型。当然,我们也可将名称空间理解成是一个“类库名”。

  尽管很早Microsoft就在Visual C++中支持名称空间的编程方式,但是很少引起Visual C++程序员的普遍关注。现在在托管C++程序中,我们必须使用这一方式,即使用#using和using关键字。例如下面的简单程序代码是在控制台上输出“Hello World”:

#using
using namespace System;
int main(void)
{
Console::WriteLine(S"Hello World");
return 0;
}

  代码中,#using是用来将一个元数据文件输入到托管C++程序中,这些文件可以是包含托管数据和结构的MSIL (Microsoft intermediate language,微软中间语言)文件,如DLL、EXE、OBJ文件等。mscorlib.dll是.NET框架的一个核心类库,包含主要的名称空间System。程序的第二行代码“using namespace System;”用来使用System名称空间。System是.NET框架根名称空间,包含最基本的类型,如用于数据流的输入/输出的System::IO等。

  在对托管C++程序开发的不断深入,我们不久就会发现,许多类型的引用都要在程序的前面使用#using和using来进行。

  (2) 基本数据类型的变化

  我们知道,标准C++语言的数据类型是非常丰富的。而托管C++的数据类型更加丰富,不仅包含了标准C++中的数据类型,而且新增了__int64(64位整型)、Decimal(96位十进制数)、String*(字符串类型)和Object*(对象类型)等类型,表1-1列出它们各自数据类型。

类型描述标准C++类型名托管C++类型名长度(位)
布尔型boolbool8
字符型charsigned char8
无符号字符型unsigned charchar8
短整型short [int]short16
无符号短整型unsigned short [int]unsigned short16
整型intint 或 long32
无符号整型unsigned [int]unsigned int 或 long32
长整型long [int]long32
无符号长整型unsigned long [int]unsigned long32
单精度浮点型floatfloat32
双精度浮点型doubledouble64
长双精度浮点型long double--64
Unicode字符--wchar_t16
64位整型--__int6464
无符号64位整型--unsigned __int6464
96位十进制值--Decimal96
对象类型--Object*32
字符串类型--String*--


  需要注意的是,String和Object在定义一个变量时,注意要有星号(“*”),但这个变量不是指针变量,这与标准C++的含义是不一样的。例如上面的代码可以改为:

#using
using namespace System;
int main(void)
{
String* hello = S"Hello World";
Console::WriteLine(hello);
return 0;
}

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。

上一篇:WIN32用户界面设计基础之Menus篇  下一篇:MFC文件浏览程序中改变文件读写对话框样式