C++11学习笔记之1——初识新特性

C++11标准虽已发布,但是VC和GCC两大编译对新标准的支持各不相同,从GCC官网给出的资料看,目前GCC对C++11标准的支持算是最多的了。

VS 2012(VC11)则相对逊色,让大众有些失望。相比之下VS2012更加注重自己的新C++语言扩展C++/CX。

因此,C++11的新特性在现在看来只能算是为将来的知识作为积累,谈不上实用价值,如果工作上没有需要了解一二便可。作者在这里也只是将书中(《C++高级编程 第二版》)所学加以笔录,以备查阅。

  1. for循环

C++11提供了一种更为方便的for循环语句,有点类似脚本语言语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int arr[] = {1, 2, 3, 4};
int idx = 0;

for (auto i : arr)
{
i += 2; // reference iterator , OK
cout << arr[idx++] << " ";
}// 3 4 5 6

idx = 0;
cout << endl;

for (auto i : arr)
{
i -= 2; // const iterator , nothing changed in arr
cout << arr[idx++] << " ";
}// 3 4 5 6
  1. __func__预定义

以往C语言中有预定义的宏来表示当前的文件、行号和函数名:__FILE__ , __LINE__ , __FUNCTION__

现在C++11中有了自己的函数名预定义,暂且称为预定义,因为没有源码可查,不知道是不是宏,书中把这个归类为C++11新内容,但是这个在C99标准中已有了…,用法很简单:

1
2
3
4
int add(int a ,int b)
{
std::cout << "Entering function :" << __func__ << endl; // Local variable
}

下一篇介绍与类构造有关的C++11新特性.