`

c++ 11 你应该了解!

    博客分类:
  • C++
c++ 
阅读更多
Alex 在他的网站上 写了一篇 C++ 11 的 cheatsheet,其中写到了 C++ 的 03 标准和 11 标准之间的差别。

我简单验证了一下:

null pointer const

void foo(char *);
void foo(int);

foo(NULL)


上面的这个例子直接报错,看来现在默认的编译器都没有这么傻了。

standard types

我一直用 {,u}int{8,16,32,64}_t 来表示涉及到长度的类型,很好用。

raw string literals

平时用的不多,不过确实很方便,我们不用再纠结转义字符啦。这个在 clang++ 和 -std=c++11 的参数下通过。

in class memeber initializer

不过我之前都还是习惯在构造函数中把需要初始化的变量写一遍,养成的习惯想一下子改估计是不太可能了。

delegating constructor

这个挺方便的,符合开发人员的直觉这点,为什么之前一定要写个辅助函数呢。现在有个这个功能,只要有个基本的初始化函数就可以了。

override

可以帮助人们检查出由于 typo 而产生的奇怪错误,非常好。

final

我擦,啥时候 c++ 也有这个 final 关键词了?这个本人不觉明历,需要多了解下之后再来发表评论。

static_assert

终于加入标准支持了,不用再自己造轮子了,虽然造这个轮子也不难。

type traits

自然可以想到可以在 template 上写很多有趣的东西,看到写出来这样的代码还是很神奇的:

typedef int mytype[][24][60];
cout << "(0 dim.): " << extent<mytype,0>::value << endl;
cout << "(1 dim.): " << extent<mytype,1>::value << endl;
cout << "(2 dim.): " << extent<mytype,2>::value << endl;


auto

这个我个人认为是新标准中最最有用的功能,再怎么称赞它都不为过,它让我不用再纠结 iterator 的具体类型,我只要关心我的逻辑就可以了。没有了auto,你写个 lambda的表达式看看

decltype

既然我们在编译器阶段就知道了变量的类型,那么我们可以直接利用这点吗?现在你通过decltype这个操作符可以轻松的实现了。不过slide这里给的例子实际用途不大,没有展示decltype有用的地方。

而真正有意思的是利用这个来弄 suffix return type syntax

可以参见这个例子:

template<class T, class U>
auto add(T x, U y) -> decltype(x+y)
{
  return x+y;
}


std::function/std::bind

个人对此无爱啊,就不多累赘了。

lambda

这个主题很有意思,下次有机会可以专门写个 blog。

std::tuple

不用 boost 库就可以享受到一个容器存放不同类型的好处,妙哉!
0
0
分享到:
评论

相关推荐

    C++11 Unicode编码转换

    主要介绍了C++11 Unicode编码转换的相关资料,帮助大家更好的理解和学习c++11,感兴趣的朋友可以了解下

    30分钟了解c++11新特性

    描述c++11新特性,引入了阿姆达表达式,扩展了C++的功能

    深入理解C++11.pdf

    深入理解C++11.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

    深入理解C++11

    深入理解C++11介绍了部分C++11中的新特性,适合用来深入了解C++11。

    高速上手 C++11/14

    简单介绍了c++11/14的新功能。 通过这本书,大家可以快速了解c++11/14.

    C++ Lambda Story - From C++98 to C++20.pdf

    2020 年 04 ⽉ 30 ⽇ - 从 C++11、C++17 和 C++20 中的 lambda 派⽣ 2020 年 06 ⽉ 19 ⽇ - 主要更新: 改进了 C++03 章节,添加了有关标准库中的辅助函数对象的部分。 添加了有关如何操作的新部分从 C++14 章节中不...

    C++11特性总结

    gcc4.4.6,不能完整支持C++11,而且有内部有基础库早已支持了C++11 STL的部分功能),再加上自己的练习也写得少,了解仅是几点简单的皮毛,这里对C++11学习总结一番,期望对他人以及未来的我有点技术知识索引上的...

    在codeblocks中配置C++11标准需要的补丁

    在codeblocks中使用C++11标准,安装及配置需要的补丁头文件。 30分钟了解C++11新特性:http://developer.51cto.com/art/201312/422379.htm

    c++ 11高速上手

    C++ 11各种特性简明介绍,快速上手,适合想了解c++ 11的开发人员。

    C++11新增特性.zip

    30分钟了解C++11新特性,包括统一的初始化方法,auto关键字,智能指针,基于范围的for循环,正则表达式,lambda表达式等

    深入理解c++11新特性解析与应用【高清完整版】

    想学习C++11的同学赶紧来下载,可以让你对C++11的新特性进行深入的了解和学习,C++11对性能和易用性可是大大的提升哟,赶紧行动吧。

    30分钟了解C++11新特性1

    30分钟了解C++11新特性什么是C++11C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C+

    C++ 11_14_17_20最新教程.rar

    现代C++教程:高速上手 C++11 14 17 20 最新的c++编程规范,了解c++最新更新动态

    《深入理解C++11:C++11新特性解析与应用》(清晰、目录)

    有空了解一下C++11的新特性,也许有用呢!

    C++11深度剖析.PDF

    想必大家在大学用的是谭浩强版的C++程序设计,虽然经典,但是语法是上世纪(C++98)的语法,想对C++大法深入了解的同道中人,恭喜你,找对地方了!

    写给大忙人看的C++,完整扫描版

    【机会给有准备的人...等待吧,兄弟】《写给大忙人看的C++...《写给大忙人看的C++》既适合需要快速了解C++的初学者,也适合想要了解C++11的新特性的有C++编程经验的高级程序员,还可作为开发人员工作中的C++综合参考。

    深入理解C++11:C++11新特性解析与应用.rar

    C++11新特性,经典书籍,详细了解C++11必备书籍,高清带目录,

    现代C++教程:高速上手 C++11_迁移_现代C++教程:高速上手C++11_现代c++教程_

    本书号称『高速上手』,从内容上对二十一世纪二十年代之前产生C++的相关特性做了非常相对全面的介绍,读者可以自行根据下面的目录选取感兴趣的内容进行学习,快速熟悉需要了解的内容。这些特性并不需要全部掌握,只...

    写给大忙人看的C++

    《写给大忙人看的C++》既适合需要快速了解C++的初学者,也适合想要了解C++11的新特性的有C++编程经验的高级程序员,还可作为开发人员工作中的C++综合参考。 《写给大忙人看的C++》全面介绍了C++语言知识,既提供了...

Global site tag (gtag.js) - Google Analytics