Visual Studio 2005中C++的变化
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-30
下一代visual studio版本(以前whidbey,现在是visual studio 2005)提供更加丰富的改进的库文件和没有很多幕后精简和加速的压力,它的大量配合的工具和新的功能将使开发者的开发过程变得简单有趣,对我而言,这些与visual studio 2005对C++的处理相比就显得有些苍白,这里我主要谈谈在下一代visual studio中C++的变化. 跟下划线拜拜 在visual studio.NET中引入了对C++扩展名的处理,扩展名是以两个下划线开始的关键字,比如__gc和__property.自从上个版本发布以来,我已经写了大量的双下划线特征的代码,我坦白也不喜欢这样,我了解具体的原因是:带两个下划线的关键字作为特殊的扩展名使它们不会跟标准编译器相混淆,你可以全面的管理扩展名可以用其他的编译器来编译,它忽视__关键字。 这是一种解决方法:微软发现了一种方法不改变编程语言的改变,但是会出现下面一些结果: ·开发者发现语法不自然 ·不能被完全的采用 如例,适当的C++处理方法:程序代码: public __gc class Foo { // hundreds of lines of code __property String* get_Text(); // hundreds of lines of code __property void set_Text(String*); // hundreds of lines of code }; 有良好习惯的程序员把get和put放在每个扩展名的右面,把潜在的变量放在旁边,但是编程语言没要求你这样做。它提供无环境支持定界结构让你明白作为一个单元是正确的,所以它是不自然的跟其它visual studio .NET语言不一样。但是你如何去处理这个问题那,唯一的方式完成C++转换成CLR反之就要改变C++.假如你想那样做,你可以有足够的自由得到自然一流的语言会给你最好的,你可以取消大量的带双划线的关键字。 生存时间和范围 我喜欢确定的解析,实际上我也喜欢碎片收集,我还能举出更多的,它们有自己的作用而且我也需要它们,假如我只在内存中构造一个对象,我希望在我自己清除它前不被清除, 所以内存管理是很复杂的。但是,如果你的对象包含一个非管理的源文件如数据库链接,一个开放文件,或者类似我要取得一个控制。我想知道它要尽快的离开,用这种模式去处理,但是它不是直接的,简单的亲密支持是最好的办法。 下面是在原始的C++中,你去完成这些事情:程序代码: //this is a code fragment { try { Foo* f=new Foo(/* params */); //all kinds of code, some of which might throw exceptions delete f; } catch (/* something */) { delete f; //whatever else, or rethrow; } } 如果你在堆栈建立对象,生命期是简单的 程序代码://this is a code fragment { Foo f; //all kinds of code, some of which might throw exceptions } 当f超过范围,不论是否是意外它将被清除这是自然的。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: C++ Builder教程下一篇: 托管C++中函数调用的双重转换
关于Visual Studio 2005中C++的变化的所有评论