科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual C++ .NET编程:托管C++概述

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

托管是.NET的一个专门概念,它是融于通用语言运行时(CLR)中的一种新的编程理念,因此我们完全可以把“托管”视为“.NET”

作者:Adding 来源:YESKY 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
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++类型名 长度(位)
布尔型 bool bool 8
字符型 char signed char 8
无符号字符型 unsigned char char 8
短整型 short [int] short 16
无符号短整型 unsigned short [int] unsigned short 16
整型 int int 或 long 32
无符号整型 unsigned [int] unsigned int 或 long 32
长整型 long [int] long 32
无符号长整型 unsigned long [int] unsigned long 32
单精度浮点型 float float 32
双精度浮点型 double double 64
长双精度浮点型 long double -- 64
Unicode字符 -- wchar_t 16
64位整型 -- __int64 64
无符号64位整型 -- unsigned __int64 64
96位十进制值 -- Decimal 96
对象类型 -- Object* 32
字符串类型 -- String* --


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

#using
using namespace System;
int main(void)
{
String* hello = S"Hello World";
Console::WriteLine(hello);
return 0;
}
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊风欢锟犲矗鎼淬劌绐楅柡鍥╁亹閺嬪酣鏌曡箛瀣仾濠殿垰銈搁弻鏇$疀鐎n亖鍋撻弽顓ㄧ稏闁跨噦鎷�

    婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓涢悾娲⒑闂堟单鍫ュ疾濠婂嫭鍙忔繝濠傜墛閸嬨劍銇勯弽銊с€掗柟钘夊暣閺岀喖鎮滈埡鍌涚彋閻庤娲樺畝绋跨暦閸洖鐓涢柛灞剧矋濞堟悂姊绘担绛嬪殐闁搞劋鍗冲畷銏ゅ冀椤愩儱小闂佹寧绋戠€氼參宕伴崱妯镐簻闁靛牆鎳庢慨顒€鈹戦埥鍡椾簼婵犮垺锚铻炴俊銈呮噺閸嬪倹绻涢崱妯诲碍閻庢艾顦甸弻宥堫檨闁告挾鍠庨锝夘敆娓氬﹦鐭楁繛鎾村焹閸嬫捇鏌e☉娆愬磳闁哄本绋戦埞鎴﹀川椤曞懏鈻婄紓鍌欑劍椤ㄥ懘鎯岄崒鐐靛祦閹兼番鍔岄悞鍨亜閹烘垵顏╅悗姘槹閵囧嫰寮介妸褎鍣ョ紓浣筋嚙濡繈寮婚悢纰辨晣鐟滃秹鎮橀懠顒傜<閺夊牄鍔庣粻鐐烘煛鐏炶姤鍠橀柡浣瑰姍瀹曠喖顢橀悩铏钒闂備浇宕垫慨鎶芥⒔瀹ュ鍨傞柦妯猴級閿濆绀嬫い鏍ㄧ☉濞堟粓姊虹涵鍛【妞ゎ偅娲熼崺鈧い鎺嗗亾闁挎洩濡囧Σ鎰板籍閸繄顓洪梺缁樺姇瀵剙螖閸涱喚鍘搁梺鍓插亽閸嬪嫰鎮橀敃鍌涚厱閻庯綆鍋嗘晶顒傜磼閸屾稑绗ч柟鐟板閹煎湱鎲撮崟闈涙櫏闂傚倷绀侀幖顐も偓姘卞厴瀹曞綊鏌嗗鍛紱閻庡箍鍎遍ˇ浼村磿瀹ュ鐓曢柡鍥ュ妼婢ь垰霉閻樿秮顏堟箒闂佹寧绻傚Λ妤呭煝閺囥垺鐓冪憸婊堝礈濮樿泛钃熼柕濞у嫷鍋ㄩ梺缁樺姇椤曨參鍩㈤弴銏″€甸柨婵嗗€瑰▍鍥ㄣ亜韫囨稐鎲鹃柡灞炬礋瀹曢亶顢橀悢濂変紦

    重磅专题
    往期文章
    最新文章