Electronic Joint Business

Solution for E-Business

lambda

你应该了解的 10 个 C++ 11 的新特性

文章评价:

本文 1对一些 C++11 标准中的新功能进行了探讨。这里我建议所有 C++ 开发者应该学习和使用这些特性。C++ 11 增加了许多语言特性和标准库,本文涉及的不过是皮毛。不过,我相信其中的一些新特性应该为所有的 C++ 开发人员所熟知,并在日常工作中普遍使用。网上可以找到很多类似的文章,涉及不同的 C++11 特性。这里我尝试将一些应该经常使用的 C++11 新功能串联起来。

auto
在 C++98 标准中,auto 关键字就用在存储期规范中(Storage duration: 定义了对象在内存中的最小生存时间。最常见的存储期是自动存储期:在堆栈上分配的对象是自动分配和自动释放的)。在新的 C++11 标准中,其新用途是类型推断(Type inference)。auto 现在变成了类型占位符,它告诉编译器,应该从变量的初始化式中推断出它的实际类型。auto 关键字可以在不同的作用域中声明变量如:名称空间、块、for 循环语句的初始化声明等等。

auto i = 42;        // i 为整型
auto l = 42LL;      // l 为 long long 型
auto p = new foo(); // p 为 foo* 指针

使用 auto 意味着减少代码。(除非是 int 型,这样比 auto 要少输入一个字母)。回忆以前为了遍历 STL 容器元素,你会使用 typedef 来简化迭代器的编写,现在这种方法落伍了。请看:

std::map<std::string, std::vector<int>> map;
for(auto it = begin(map); it != end(map); ++it)
{

}

请注意,auto 不能被用作函数的返回类型,不过在函数有尾随返回值(trailing return type 2)的情况下,你可以用 auto 来代替函数的返回类型。此时, auto 告诉编译器不需要推断而只是直接在函数末尾查找返回类型。比如在下面的例子中,compose 函数的返回值就是操作符+ 的返回值,该操作符用于将类型 T1 和类型 T2 的值相加。

>>> 阅读全文

 

, ,

C++11 一览 (一)

C++0x 现在成为了一个正式的标准,将以下称为 C++11。在2011年,它被批准成为ISO C++。本文的目的是鸟瞰大部分的 C++11 功能,并对那些已经添加进 VS2010 的功能做出深刻的分析。本文可以作为一个平台让您对个别功能开始进行全面的研究。

背景
几乎花了一个世纪的时间,查尔斯 · 巴贝奇(Charles Babbage)的分析机(Difference Engine)才演变成强大的计算机。在四十年代,受限于当时计算机的运算速度和内存,只能使用汇编级别的语言。十年后,事情开始有所变化,从 1950 年到 1970 年期间绽放出许多编程语言,其中许多一些延续到今天。

1979 年,为贝尔实验室工作的 Bjarne Stroustrup 开始着手加强”C”语言,首先添加了类,然后是虚函数、 运算符重载,多重继承、 模板和异常处理,以及其它功能。起初他管这个语言叫“带类的C -C with Classes”。在1983年更名为 c++ (+ + 可能说它是 C 的递增) 。

C++ 大事件/演化时间表如下:

  • 1983 – 第一个商业版本的 C++ 编译器
  • 1998 – C++ 标准委员会开始标准化 C++ [C++98]
  • 2003 – 推出不带任何新功能的补丁包 [C++03]
  • 2005 – 发布了“库技术报告- Library Technical Report 简称 TR1”
  • 2011 – 引入大量的功能并增强 C++ 标准库

我们可以看出,这个变化是最大的一次(好吧,添加 STL 也可以算是大变化)。

>>> 阅读全文

 

, , ,