Visual Studio 2013预览版中的 C++11 新特性
2013-07-27 21:16
337 查看
介绍
Visual C++ 2013 Preview 在6月发布了,C++开发者又找到一个编译器可以更好的支持ISO C++ 11 的特性了。本文介绍了这些新的特性并附有代码实例。你想动手尝试编译文中的这些代码话,需要去下载并安装Visual Studio 2013 Preview,我尚未在其他编译器上测试这些代码,所以我并不知道与Gcc 或Clang的兼容性(可恶的C++)。
原始字符串字面值
VC++ 2013现在支持原始字符串字面值了。注意:它并不支持统一码字符串字面值。一个原始字符串字面值允许你避免转义那些在HTML,XML和正则表达式里运用得得心应手的特殊字符。下面是一个示例用法:
可变参数模板
可变参数模板是一个允许多个参数的模板。在我看来,这是个提供给库作者而不是给库使用者的特性,所以我也不是很确定它在C++程序员中会有多流行。以下我们用一个非常简单的例子来展示如何在实际开发中使用可变参数模板。对于可变参数模板,一个常用的做法就是专攻其中一个参数,然后把其余的参数都变为可选。这个做法可以以递归的形式实现。以下是一个比较傻的例子,但它能让你明白什么时候不应该用可变参数模板,继而更好地了解这个语言特性。
Tuple的实现
我们来看一下std tuple的头文件 (由VC++团队的Stephan T. Lavavej负责维护 – 最初的代码由P.J. Plauger编写),浏览这些代码,让我的大脑几乎要宕掉了。为了更好的理解代码,我将代码进行简化,摘出其中可以访问tuple的值的最少的代码(能够支持读和写)。这有助于理解在设计模板类时,通常可变参数模板是如何通过递归展开来大幅减少代码的行数。
代理构造函数
代理构造函数已经在C#中用了好长时间,所以将其引入到C++中也很不错。编译器允许一个类型的构造函数(代理构造函数)在其初始化列表中包含另一个构造函数。以前编写代码形式如下:Delegating Constructors
函数模板中的默认模板参数
这是VC++ 2013现在支持的另一项C++ 11特性。目前为止,下面的代码仍然无法通过VC++编译。
显式转换运算符
我仍然记得2004年八月的一天,那个时候我意识到尽管我是一个还不错的C++程序员,我对explicit关键字一无所知,这令我十分局促不安。那之后我写了一篇博客文章Applying explicit on your constructors(需要翻墙)
简单说明一下explicit的使用。考虑一下下面的例子。
初始化列表和统一初始化
一直以来我们都可以用初始化列表初始化数组,现在对于有类型为std::initializer_list<T>(包含构造函数)的类型我们也可以这么做。标准库中的容器现在都支持这一特性。
参考资料
C++11 Features (Modern C++)What’s New
for Visual C++ Developers in VS2013 Preview
参与翻译:无奈的钝刀, MtrS, 大志darcy, jimmyjmh, LinuxQueen, soaring
相关文章推荐
- Visual Studio 2013预览版中的 C++11 新特性
- Visual Studio 2013预览版中的 C++11 新特性
- Visual Studio, GCC, Clang, Intel 对 C++11 特性的支持一览表
- Visual Studio 2012 Express 较好支持 C++11 新特性
- 免费下载 !微软 Visual Studio 2013 and ASP.NET MVC 5 新特性体验课程
- Visual Studio 2013 Preview对C++11的支持
- 费下载 !微软 Visual Studio 2013 and ASP.NET MVC 5 新特性体验课程
- Visual Studio 2013的新特性介绍
- Visual Studio 2013 Web开发新特性
- c++11新特性VS2013编译器
- Visual Studio 2013 各版本下载地址 Visual Studio 2015预览版下载地址
- Visual Studio 2013 Preview对C++11的支持
- [转载]Visual Studio, GCC, Clang, Intel 对 C++11 特性的支持一览表
- Visual Studio 2012 Express 较好支持 C++11 新特性
- Visual Studio 2013 Preview对C++11的支持
- Visual Studio, GCC, Clang, Intel 对 C++11 特性的支持一览表
- visual studio 2013 update 4 正式版出来了和visual studio 2015 预览版
- Visual Studio 2013 Preview对C++11的支持
- 我最喜欢的visual studio 2013的新特性
- Android P 开发者预览版发布,细数开发者最不能错过的新特性