The Biggest Changes in C++11 (and Why You Should Care) ,译文:C++11 的重大改变
事实上,核心 C++11 已经有了很大的改变。C++11 标准库同样增加了新的内容。捎带一句,C++11, also formerly known as C++0x …
Core
事实上,核心 C++11 已经有了很大的改变。现在它支持 lambda 表达式,自动类型推断,统一的初始化语法,委托构造函数,已删除和默认函数声明,nullptr,以及最重要的,右值引用——一种预言将会改变创造和处理对象方法的技术。
Lambda 表达式
lambda 的函数调用运算符为 const-by-value,但对 mutable
关键字的使用可将其取消。
自动类型推断和 decltype 赋予 auto
关键词新生: 数据存储类型
auto
自动推导类型,轻度用户(不涉及模板)谨慎使用,在书写便利和代码易读两者之间寻求,滥用降低代码可读性。
注意使用的限制
1 2 3 4 5 6 size_t length = 10 ;int diff = 0 - length;auto diff2 = 0 - length;cout << (0 - length) << endl ;
统一初始化语法 列表初始化:初始化操作的多种变体是令人感觉困扰的重要原因之一。C++11 使用统一的大括号标记清除了这种混乱。
看了以上几篇帖子之后,知道了几个名词:Aggregate 和 POD,trivial 和 standard-layout。但详细的概念很是混乱,其中一条条的“是与不是”、“有与没有”难道是让人用来背诵记忆的吗?实用主义不要求学究钻研,编码过程用到了再回来复习。目前,水过不学了。其实真要较真的话,应该直接去找 C++ 的新标准,网上的终究是个参考,会有出入。
删除和默认函数
nullptr
委托构造函数
右值引用
Library
2003年,C++ 以库技术报告 1(TR1)的形式经历了一次大型重构。TR1 包含了新的容器类(unordered_set
,unordered_map
,unordered_multiset
和 unordered_multimap
)和许多新的库,例如正则表达式,元组,函数对象包装器。随着 C++11 的颁布,TR1 连同新的库一起正式集成到 C++ 标准中。下面是 C++11 标准库的特性:
线程库
毫无疑问,从程序员角度看,C++11 最重要的改进就是并发。
新的智能指针类 C++98 只定义了一个智能指针类 auto_ptr
,而这个类现在已经被废弃了。
C++11 包含了新的智能指针类:shared_ptr
、weak_ptr
和最近新加的 unique_ptr
。
weak_ptr
是多线程下,判断某一(在多个线程中共享的)对象是否 alive 的唯一方法。
新的算法 THE END
延伸阅读: