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 库就可以享受到一个容器存放不同类型的好处,妙哉!
分享到:
相关推荐
7. **C++11及更高版本的新特性**:例如右值引用、lambda表达式、auto关键字、move语义等。 8. **设计模式**:常见的设计模式在C++中的实现和应用,如工厂模式、单例模式、装饰器模式等。 9. **性能优化**:如何...
10. **C++11及后续标准**:自C++11开始,C++引入了一系列新特性,如lambda表达式、右值引用、自动类型推导(auto)、范围for循环等,提升了语言的现代性和效率。 通过阅读《C++经典对话系列》中的内容,读者不仅...
C++是一种强大的、通用的编程语言,被广泛用于系统软件、应用软件、游戏开发、设备驱动、嵌入式系统等领域。在C++的学习过程中,每一章都包含着丰富的概念和技术。"C++第三章"通常会涉及面向对象编程的基础知识,这...
10. **C++11及以上新特性**:介绍C++11、C++14、C++17等新版本引入的特性,如lambda表达式、右值引用、自动类型推断等。 总之,这份压缩包文件提供了一个全面学习C++的资源库,无论你是完全的编程新手还是有一定...
智能指针在面向对象编程和C++11及更高版本中尤为重要。 总的来说,这份"C++指针资料集合"可能会包含这些主题的详细讲解,包括但不限于指针的声明、初始化、解引用、传递参数、动态内存管理、多级指针、指针与数组的...
6. **C++11及以后的新特性**:自C++11标准以来,C++引入了许多新特性,如lambda表达式、右值引用、auto关键字、强类型枚举、move语义等,这些都极大地提升了C++的现代性和易用性。 7. **内存管理**:C++允许程序员...
了解 C++ 中的英语单词可以帮助开发者更好地理解编程概念和实现编程思想。本文将详细解释 C++ 中常用的英语单词,并对每个单词的含义和应用进行说明。 1. 抽象数据类型 (Abstract Data Type) 抽象数据类型是一种...
C++11是C++语言的一个重要版本更新,它引入了大量的新特性,其中包括对多线程的支持。线程池(ThreadPool)是一种管理线程资源的有效方式,它在现代并发编程中扮演着至关重要的角色。线程池允许程序预先创建一组线程...
10. **多线程编程**:C++11引入了对多线程的支持,了解线程同步(如mutex、condition_variable)和并发编程的概念,对于编写高效的并发程序很有帮助。 11. **C++标准库的扩展**:C++11、C++14、C++17和C++20等新...
通过这些实例,读者不仅可以学习到Visual C++的基本用法,还能深入了解C++语言的特性和Windows编程的细节。无论是初学者还是有一定经验的开发者,都能从这些实例中受益匪浅,提升自己的编程技能和解决问题的能力。
在这个部分中,我们可以了解到C++11成为正式标准的时间、C++11标准库文件的使用时间、C++11提供的新语言特性和标准库特性、以及C++11努力达到的目标。 接着,文档介绍了标准委员会的设计目标和工作方式,包括标准...
C++11是C++编程语言的一...这些只是C++11新特性的一部分,这个30分钟的教程将帮助你快速理解这些改变,并开始在你的项目中利用这些新功能。通过深入学习和实践,你可以提升你的C++编程技能,写出更高效、更安全的代码。
通过阅读《Effective Modern C++11》,你可以了解如何有效地利用这些特性,写出更加高效、可靠和易于维护的C++11代码。书中不仅涵盖了以上提到的特性,还包含了更多实用的编程技巧和最佳实践,对于任何想要深入理解...
C++11标准,全称为ISO/IEC 14882:2011,是C++编程语言的一个重要...通过阅读"ISO+IEC+14882-2011-最终正式的C++11标准.pdf"和"C11 Standard.pdf"这两份文档,你可以深入了解这些标准的细节,并将它们应用到实际项目中。
7. **C++11及更高版本的新特性**:C++11、C++14、C++17和C++20引入了许多新功能,如lambda表达式、右值引用、自动类型推导、并发编程支持等。这些新特性让C++更强大,也更具现代感。 8. **设计模式**:资料中可能会...
在讨论C++11和C++14之前,我们需要了解C++的发展时间线。C++语言最初由Bjarne Stroustrup于1979年开始开发,1985年发布了首个商业版本。在此之后,C++经历多次更新,每次更新都增加或改进了新的语言特性和标准库。 ...
326页 2013年 IBM 编译器团队出品。对C++11的深入介绍
深入理解C++11介绍了部分C++11中的新特性,适合用来深入了解C++11。