深入理解C++11

1.预定义标识符

__fun__             返回所在函数名字
#pragma _Pragma     将预处理指令升级为操作符。
... __VA_ARGS__     边长参数定义
long long
nullptr             代替NULL  解决二义性问题。

通过{},.快速初始化成员变量&变量初始化,静态成员变量无法用该方法。

int arr[] {1,4,5,7}

2.新特性以及关键字

final       禁止重写
override    保证重写了父类的函数
const       函数内不能改变类中字段。

using base::fun         继承基类中的重载函数
using base::base        继承基类中的构造函数,但是其只初始化基类的变量。
委派构造函数
class info{
public:
    info();
    info(int i):info(){this.i=i;}       初始化列表和委派构造函数不能共存
private:
    int i
}

3.左值与右值讨论

左值:有地址,可以引用和地址
右值:临时的,没有地址和引用(将亡值)
std::move 强制左值转右值(可理解成删除原变量,赋予新变量)

4.类型相关

auto            变量类型自动推导
decltype        以表达式为参数,获得变量类型
typeid(?).name  打印变量名

5.增强for循环:

for(auto item: array){
    std::cout<

6.智能指针:

// 管理指针的创建与释放。
#include 
auto_ptr
unique_ptr
share_ptr
weak_ptr

7.多线程相关,原子变量、原子操作

#include 
#include 
#include 

8.lambda函数:面向函数的编程

[capture](parameters)->return-type{statement;};     语法
[](int x, int y)->double{return x+y*1.0;};          示例


[]{};           最简单的lambda表达式

[var]           传值方式获得var
[=]             传值方式获得所有变量
[&]             传引用方式获得所有变量
[&var]          传引用方式获得var
[this]          值方式获得当前this指针

[=,&a,&b]       可以组合使用,但是组合不得造成变量重复。

其他

9.alignas(32)       指定对其bit数目。
R"(xxxxx)"          原生字符串,避免使用转义。

你可能感兴趣的:(深入理解C++11)