`

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++ 面试题!!!

    7. **C++11及更高版本的新特性**:例如右值引用、lambda表达式、auto关键字、move语义等。 8. **设计模式**:常见的设计模式在C++中的实现和应用,如工厂模式、单例模式、装饰器模式等。 9. **性能优化**:如何...

    C++经典对话系列!!!!

    10. **C++11及后续标准**:自C++11开始,C++引入了一系列新特性,如lambda表达式、右值引用、自动类型推导(auto)、范围for循环等,提升了语言的现代性和效率。 通过阅读《C++经典对话系列》中的内容,读者不仅...

    c++第三章!!!!!!!!!!!!!

    C++是一种强大的、通用的编程语言,被广泛用于系统软件、应用软件、游戏开发、设备驱动、嵌入式系统等领域。在C++的学习过程中,每一章都包含着丰富的概念和技术。"C++第三章"通常会涉及面向对象编程的基础知识,这...

    学习c++赶快下啊!!!

    10. **C++11及以上新特性**:介绍C++11、C++14、C++17等新版本引入的特性,如lambda表达式、右值引用、自动类型推断等。 总之,这份压缩包文件提供了一个全面学习C++的资源库,无论你是完全的编程新手还是有一定...

    C++指针资料 集合!!

    智能指针在面向对象编程和C++11及更高版本中尤为重要。 总的来说,这份"C++指针资料集合"可能会包含这些主题的详细讲解,包括但不限于指针的声明、初始化、解引用、传递参数、动态内存管理、多级指针、指针与数组的...

    C++编程思想!!!!!

    6. **C++11及以后的新特性**:自C++11标准以来,C++引入了许多新特性,如lambda表达式、右值引用、auto关键字、强类型枚举、move语义等,这些都极大地提升了C++的现代性和易用性。 7. **内存管理**:C++允许程序员...

    c++常用英语单词!!!!

    了解 C++ 中的英语单词可以帮助开发者更好地理解编程概念和实现编程思想。本文将详细解释 C++ 中常用的英语单词,并对每个单词的含义和应用进行说明。 1. 抽象数据类型 (Abstract Data Type) 抽象数据类型是一种...

    深入理解C++11.pdf

    很遗憾,提供的文件信息并未包含实际的“部分内容”文本,仅提供了重复的网址链接,无法从中提取任何有关C++11的具体知识点。鉴于此,我将基于标题“深入理解C++11.pdf”所暗示的内容,详细阐述C++11标准中一些核心...

    C++11 线程池 ThreadPool

    C++11是C++语言的一个重要版本更新,它引入了大量的新特性,其中包括对多线程的支持。线程池(ThreadPool)是一种管理线程资源的有效方式,它在现代并发编程中扮演着至关重要的角色。线程池允许程序预先创建一组线程...

    我的C++心得 大家指教指教!!!

    10. **多线程编程**:C++11引入了对多线程的支持,了解线程同步(如mutex、condition_variable)和并发编程的概念,对于编写高效的并发程序很有帮助。 11. **C++标准库的扩展**:C++11、C++14、C++17和C++20等新...

    Visual+C++精彩实例详解!!!!

    通过这些实例,读者不仅可以学习到Visual C++的基本用法,还能深入了解C++语言的特性和Windows编程的细节。无论是初学者还是有一定经验的开发者,都能从这些实例中受益匪浅,提升自己的编程技能和解决问题的能力。

    c++11FAQ中文版

    在这个部分中,我们可以了解到C++11成为正式标准的时间、C++11标准库文件的使用时间、C++11提供的新语言特性和标准库特性、以及C++11努力达到的目标。 接着,文档介绍了标准委员会的设计目标和工作方式,包括标准...

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

    C++11是C++编程语言的一...这些只是C++11新特性的一部分,这个30分钟的教程将帮助你快速理解这些改变,并开始在你的项目中利用这些新功能。通过深入学习和实践,你可以提升你的C++编程技能,写出更高效、更安全的代码。

    Effective Modern C++11

    通过阅读《Effective Modern C++11》,你可以了解如何有效地利用这些特性,写出更加高效、可靠和易于维护的C++11代码。书中不仅涵盖了以上提到的特性,还包含了更多实用的编程技巧和最佳实践,对于任何想要深入理解...

    C++11标准完整版(ISO+IEC+14882)&C11;标准

    C++11标准,全称为ISO/IEC 14882:2011,是C++编程语言的一个重要...通过阅读"ISO+IEC+14882-2011-最终正式的C++11标准.pdf"和"C11 Standard.pdf"这两份文档,你可以深入了解这些标准的细节,并将它们应用到实际项目中。

    好东西!c++时尚设计百例!

    7. **C++11及更高版本的新特性**:C++11、C++14、C++17和C++20引入了许多新功能,如lambda表达式、右值引用、自动类型推导、并发编程支持等。这些新特性让C++更强大,也更具现代感。 8. **设计模式**:资料中可能会...

    c++11c++14综述

    在讨论C++11和C++14之前,我们需要了解C++的发展时间线。C++语言最初由Bjarne Stroustrup于1979年开始开发,1985年发布了首个商业版本。在此之后,C++经历多次更新,每次更新都增加或改进了新的语言特性和标准库。 ...

    (1分下载网)深入理解C++11.pdf 带目录高清版

    326页 2013年 IBM 编译器团队出品。对C++11的深入介绍

Global site tag (gtag.js) - Google Analytics