体验下一代微软平台开发Visual Studio 2005(2)

原创 2004年10月30日 22:39:00

  今天我们一起来详细探索一下VC++2005中C++/CLI为我带来了哪些新的特性。
  首先,C++/CLI引入了一些新的数据类型关键字:
  ref class/ref struct、value class/value struct、interface class/interface struct、enum class/enum struct,在C++/CLI中

class和struct不具有C#的语意,而是仍然保持在C++中的区别,即默认的访问级别不同。在C++/CLI中,ref class/ref struct具有C#中

class的语意,而value class/value struct具有struct的语意。相应的interface class/interface struct和enum class/enum struct分别

类同于C#中interface和enum的语意。在这里,以ref class为例,虽然它们是两个单词,但它们共同组成了一个关键字,也就是说,在

C++/CLI中,关键字中可能会包含空格,就是要把多个单词合起来理解成是一个关键字,而不能把它们孤立开。
  在C++/CLI中,关键字还分为上下文敏感和上下文不敏感的,前面提到的关键字都是上下文不敏感的,即它们无论出现在哪里,都表示是

关键字,不能用作标识符。而上下文敏感的关键字则只在它们应当出现的地方才作为关键字,否则将不具备任何特殊的含义,包括可以作为

标识符使用。
  新加入的上下文敏感数据类型关键字有:property、delegate和event,它们基本上都对等于C#中的相应关键字。
  除了数据类据关键字,C++/CLI还引入其它一些新的关键字:abstract、new、override、sealed、generic、where、finally、gcnew、

initonly、literal、nullptr,它们与它们在C#中的含义基本一致,稍后我会对其中部分C#中没有关键字作介绍。
  C++/CLI中还引入了两个新的运算符,^和%,它们用于支持C++/CLI中新的“名柄”的概念。除此以外,C++/CLI还引入了一些新语言构造

,它们是以库的型式来实现的,不作为关键字出现。
  在C++/CLI中,由于引入了托管堆,所以,内存分配方法除了C++原有的Native的栈分配和堆分配,又多出一种在托管堆上的分配,配合

这一理念的语法特性就包括了句柄,^和%运算符,gcnew等关键字。
  下面是一个代码片断,举例说明了在C++/CLI中使用托管代码的情况:
ref class R
{
private:
 int m_value;
public:
 property int Value
 {
  int get()
  {
   return m_value;
  }
  void set(int value)
  {
   m_value = value;
  }
 }
};
 
int main()
{
 R ^ r = gcnew R();
 r->Value = 6;
}
  这里演示了ref class即托管类的用法,还有新的property关键字以及托管对象分配的方法。可以这样理解^符号,它就是一种托管的指

针,相当于Managed C++中的__gc指针,用它可以指向一个托管的对象,语法上用起来与*一致,只不过得用gcnew而不是new才能返回一个^类

型的指针(称为句柄)。与此同时,新增的%运算符其实就对应了C++原来的&运算符,只不过它是用于托管对象的。而新增的nullptr关键字则相当于在C#中的null关键盘,用于表示一个空的托管对象引用。从这个程序中可以看出C++/CLI从语法层面上要比Managed C++好看好用得多。
  喜欢C++的人往往都是对性能很敏感,对内存分配也很敏感,虽然在托管的情况下,内存分配从来就不是一个大问题,不过很多情况下我

们也希望对对象的释放作更多的控制。在C#中用using(...){}就可以保证在对象超出个区域时自动调用它的IDisposable.Dispose()方法释放

资源,C++/CLI提供了更优雅的写法:
int main()
{
 R r;
 r.Value = 6;
}
这样就行了,注意,是个托管引用对象,所以它并不会在栈上生成,它仍会在托管堆生成,但在栈上有对它的引用,并保证在超出引用域时

调用IDisposable::Dispose()方法。很遗憾,在我下载试用的Visual C++ 2005 Beta 1中,这个特性似乎并没有实现,上面的写法会出现语

法错误,据说是要打上Update补丁才可以支持。
  C++/CLI就先说这么多,VC的文档中Express Library for Visual Studio/Visual C++ Express Edition/Reference/C/C++ Languages/C++ Language Reference/New C++ Language Features一节中比较全面的列出了C++/CLI中的新特性,通过它可以迅速的帮助我们了解C++/CLI。
  Visual C++ 2005为我们带来了C++/CLI,而Visual C# 2005同样也为我们带来了新东西,C# 2.0在C#的基础上作了很多的改进,尤其是引入了泛型,我们后面再一起来体会它吧。

体验下一代微软平台开发Visual Studio 2005(1)

  今天无聊在微软网站闲逛,不小心看到了Visual Studio 2005的各组件的Express Beta版本下载,于是就把它们下载了来下来试用。  最早看到有关VS2005的介绍是在DevDay...
  • lifanxi
  • lifanxi
  • 2004年10月29日 15:07
  • 1510

体验下一代微软平台开发Visual Studio 2005(3)

  忙了好几天,终于又找到了一点空闲的时间来继续我们体验历程,今天我们要一起体验的是Visual C# 2005 Express Edition Beta。  可以说,打开VC#的界面,没有给我带来什...
  • lifanxi
  • lifanxi
  • 2004年11月04日 16:34
  • 1697

体验下一代微软平台开发Visual Studio 2005

今天无聊在微软网站闲逛,不小心看到了Visual Studio 2005的各组件的Express Beta版本下载,于是就把它们下载了来下来试用。  最早看到有关VS2005的介绍是在DevDays ...
  • xmlscript
  • xmlscript
  • 2004年11月03日 01:13
  • 897

安装Visual Studio 2005 SP1--极其惨烈的人生体验

今天在微软的网站上面看到了Microsoft® Visual Studio® 2005 Team Suite Service Pack 1 在花了好几个小时极其痛苦的安装经验后,将需要注意的地方写下来...
  • downmoon
  • downmoon
  • 2007年03月01日 13:40
  • 23727

Visual Studio 2005 教程

QUOTE:Visual Studio 2005(3):C# 2.0 语言和编译器资源简介随着Dot NET Framework 2.0和Visual Studio 2005的发布,dot net平台...
  • justmuch
  • justmuch
  • 2006年06月12日 11:02
  • 17396

Visual Studio 2005 各种版本的详细比较

Visual Studio 2005 Product Line OverviewFeatureExpress productsVisual Studio Standard EditionVisual ...
  • yezie
  • yezie
  • 2005年12月03日 17:22
  • 4585

Visual Studio 2005和Visual Studio 2008的区别

今天在机器上安装了visual studio2008,因为之前开发一直使用2005所以没有舍得把它卸载,安装之后证实这两个版本应该是可以共存的。不过也发现了一些问题,感觉现在机器上有些混乱了,visu...
  • lulu831110
  • lulu831110
  • 2010年03月10日 10:45
  • 4786

Visual Studio 2005的各个版本

支持正版,做DotNet开发,工具选择不二是Vistual Studio 2005,需要了解各个版本的内容相关的Licence: A:Visual Studio Express Products...
  • shanyou
  • shanyou
  • 2006年10月15日 18:47
  • 378

Visual Studio 2005 SDK Version 4.0下载地址

http://www.microsoft.com/downloads/details.aspx?FamilyID=51a5c65b-c020-4e08-8ac0-3eb9c06996f4&Displa...
  • zjdtmp
  • zjdtmp
  • 2007年04月14日 21:17
  • 1180

在Microsoft Visual Studio 2005上安装.net 3.0开发环境(含开发环境下载地址)

开发.net 3.0 应用程序,需要安装开发环境。步骤如下:1. 开发.net 3.0,首先当然要安装.NET Framework 3.0 了  安装前使用windowsupdate安装好最新的更新(...
  • flashlm
  • flashlm
  • 2007年08月28日 12:09
  • 3118
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:体验下一代微软平台开发Visual Studio 2005(2)
举报原因:
原因补充:

(最多只允许输入30个字)