当前位置:编程学习 > VB >>

C++开发在VS2010中易如反掌

作为C++的主流开发工具Visual Studio来说,每一次升级都没有让开发者失望,随着Visual Studio平台越来越人性化,Visual Studio下的C++开发也同样得到了开发者的认可,在目前已经推出的Visual Studio 2010版中有哪些功能又是C++开发者值得兴奋的呢,Visual Studio 2010如何成为C++的开发利器让我们来数一数2010版针对C++有哪些改进点。
新特性之一:Lambda表达式。
很多编程编程语言都支持匿名函数(anonymous function)。所谓匿名函数,就是这个函数只有函数体,而没有函数名。Lambda表达式就是实现匿名函数的一种编程技巧,它为编写匿名函数提供了简明的函数式的句法。同样是Visual Studio中的开发语言,Visual Basic和Visual C#早就实现了对Lambda表达式的支持,终于Visual C++这次也不甘落后,在Visual Studio 2010中添加了对Lambda表达式的支持。




通过以上两段使用Lambda表达式的语法和未使用Lambda表达式的语法比较,我们不难发现,使用Lambda表达式的语法相比起来更加简洁,使用起来更加简单高效。
新特性之二:静态断言static_assert
在新的C++标准C++0x中,加入了对静态断言的支持,引入了新的关键字static_assert来表示静态断言。使用静态断言,我们可以在程序的编译时期检测一些条件是否成立,这个特性在调试模板函数的模板参数时特别有用。在编译的时候,模板函数实例化,这时我们就可以使用静态断言去测试模板函数的参数是否按照我们的设计拥有合适的值。
此外,静态断言还带来很多其他的优势。例如静态断言在编译时进行处理,不会产生任何运行时刻空间和时间上的开销,这就使得它比assert宏具有更好的效率。另外比较重要的一个特性是如果断言失败,它会产生有意义且充分的诊断信息,帮助程序员快速解决问题。



当我们在主函数中使用“1”去实例化Kitten这个结构体时,在编译的时候,静态断言static_assert会测试参数N的值,当N的值小于 2时就会产生一个断言错误,并将相应的调试帮助信息输出到“Error List”窗口中,这样程序员就可以对问题快速定位,解决问题就更加方便了。
新特性之三:auto关键字
在C++0x中,auto关键字的意义发生了改变。从Visual C++ 2010开始,auto关键字将用于指引编译器根据变量的初始值来决定变量的数据类型。换句话说,我们可以把auto当成一种新的数据类型,它可以“从初始化器(initialize)中推导出所代表的变量的真正类型”。这种对auto关键字的使用方式可以大大消除当前替代方式所导致的冗长和易出错的代码。



在这段代码中,我们使用auto关键字来代替了真正的数据类型map<string, string>::iterator,这使得整个代码自然而简洁。这样通过代码的形式我们不难发现,Visual Studio 2010中auto关键字的使用能帮助开发者在开发时带来不少的好处。
新特性之四:右值引用
作为最重要的一项语言特性,右值引用(rvalue references)被引入到 C++0x中。我们可以通过操作符“&&”来声明一个右值引用,原先在C++中使用“&”操作符声明的引用现在被称为左值引用。 左值引用和右值引用的表现行为基本一致,它们唯一的差别就是右值引用可以绑定到一个临时对象(右值)上,而左值引用不可以。如下例:



在第一行代码中,我们看到当将一个临时对象int()绑定到一个左值引用,这时就出现错误提示了,而在第二行中,改为右值引用,则不会出现错误情况。
以上提到的四点不过是Visual Studio 2010中的冰山菱角,更多的功能以及特性还是要我们在开发时通过自己的体验会挖掘出更多值得我们欣喜的东西来,特别是Visual Studio 2010中的人性化功能可能在大家开发时有更多的体会,欢迎大家交流。
发这里啥意思?给微软做广告? 第一张图 Lambda的对比 好像没区别 现在的枪手素质这么低?连该到什么地方做事都不知道了?
引用 2 楼 dbcontrols 的回复:
发这里啥意思?给微软做广告?

微软的实力那么大还用广告吗?
引用 5 楼 chuntaindejingse 的回复:
引用 2 楼 dbcontrols 的回复:
发这里啥意思?给微软做广告?

微软的实力那么大还用广告吗?

实力大了更需要广告,保持实力比赢得实力更难。 哈哈  楼上的以前是广告公司的啊?
楼上的去看看,VS2010有好多新的东西值得学习。
引用 8 楼 lyduyans 的回复:
楼上的去看看,VS2010有好多新的东西值得学习。

功能的确是不少,要学习也的学习好长一段时间! Visual C++改善了IDE的效率,改进了项目系统支持、增强了Visual Studio用户体验、增强的MFC功能等等。 
引用 3 楼 overown 的回复:
第一张图 Lambda的对比 好像没区别

看半天眼睛都累了,还真是没看出来有啥区别,看来还的自己亲自体验下! 010 Beta2 发布已经多日, 今天终于有时间亲身体验一下,心情激动中。
还没有下载的朋友可以去下载。
下载后运行part1生成一个iso文件,
可以用一个虚拟光驱直接打开,或者是把它刻的一张光盘上,
哈哈,我就是这么干的。有了光盘就可以安装了。  无论功能多么炫目、技术多门领先,最重要的一点就是能够满足开发人员的需求 我感觉08就已经很棒了,这么快又出2010了,太快了。。 可以在向下定向的方案中使用 Visual Studio 2010 . 充分利用 Visual Studio 2010 的一些新功能,感觉不错。
引用 10 楼 sgyetvrgb 的回复:
Visual C++改善了IDE的效率,改进了项目系统支持、增强了Visual Studio用户体验、增强的MFC功能等等。

很想让自己的工作大大的提高啊! 如果是开发人员测试部署,可以使用VS 2010自带的部署DAC包的功能. 用过.Net的开发人员都知道,我们用C#编写代码的时候有智能感应器,这个技术给我们带来很大的方便。 感觉微软这次将给C++开发者更多的关怀和支持。
引用 14 楼 zhiainiyiren 的回复:
可以在向下定向的方案中使用 Visual Studio 2010 .

还有C++ IDE的增强、并行运算、F#语言的支持还有好多其它的创新技术和特性 功能的确是不少,要学习也的学习好长一段时间! 项目开发中,VS2010比VS2008多了很多的优势。这不是几篇文章就能说的完的。 在VS2008中开发者如果使用添加引用功能,就会发现加载速度非常的慢,硬件配置略低的电脑甚至出现宕机、假死等情况。
引用 11 楼 mingyudeshizhe 的回复:
引用 3 楼 overown 的回复:
第一张图 Lambda的对比 好像没区别

看半天眼睛都累了,还真是没看出来有啥区别,看来还的自己亲自体验下!


根本就是LZ的图配错了,右侧用的也是lambda的语法。

本来估计是打算配一个在struct里面写functor的例子的,结果左右两图全给用lamdba了,粗心。

lamdba的引入的确是C++语法的一个非常重大的改进,可以催生出很多新的编程模式。不过这不是VC2010的独门绝技,GCC4.5也支持。

事实上GCC4.5的新特性比VC2010多很多,比如很常用的initializer_list,GCC在4.4就支持了,VC2010居然不支持,遗憾。
补充:VB ,  COM/DCOM/COM+
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,