C++11新特性总结

constexpr 泛化的常数表达式

 

extern template class 外部模板

 

std::vector v{ "xyzzy", "plugh", "abracadabra" } 统一的初始化

 

decltype(some_int) other;类型推导

 

auto my_onheap_lambda_func = new auto([=](int x) { /*...*/ });Lamda函数与表达式

void(*func_ptr)(int) = a_lambda_func;

template
auto adding_func(const Lhs &lhs, const Rhs &rhs) -> decltype(lhs+rhs) {return lhs + rhs;}

auto func_name(int x, int y) -> int;

 

SomeType() : SomeType(42) {}对象构造的改进

 

virtual void some_func(int) override; // 病态的,不会重写基类的方法显示重写 (覆盖,override) final

struct Base1 final { };
struct Derived1 : Base1 { }; // 病态的, 因为类Base1被标记为final了
virtual void f() final;

 

enum class Enumeration强类型枚举

 

template 模板的别名
using TypedefName = SomeType;

typedef void (*FunctionType)(double);       // 老式语法
using FunctionType = void (*)(double); // 新式语法

 

 U() {new(&p) Point();} // 由于Point的原因, 必须定义构造函数.  联合union 的构造 无限制的unions

 

template class tuple;可变参数模板

std::forward(params)…

 

u8"This is a Unicode Character: \u2018."//UTF-8 char新的字符串字面值

u"This is a bigger Unicode Character: \u2018."//UTF-16 char16_t

U"This is a Unicode Character: \U00002018."//UTF-32 char32_t

R"(The String Data \ Stuff " )"

 

线程局部存储 新的线程局部存储的生存期(原有的静态,动态,自动变量除外)由thread_local关键字指

 

NonCopyable() = default;明确默认和明确删除的特殊成员函数 
NonCopyable(const NonCopyable&) = delete;

void f(int) = delete;    // 不能调用这个函数

template void f(T) = delete;    //不能调用这个函数

 

static_assert(sizeof(int) <= sizeof(T), "T is not big enough!");//静态断言

 

sizeof(SomeType::member);//允许sizeof运算符作用在类型的数据成员

alignas(float) unsigned char c[sizeof(float)]//控制和查询对象的对齐方式

set_new_handler允许实现垃圾回收

TR2  filesystem

 

std:thread::native_handle()线程支持

recursive_mutex  condition_variable_any  futures  promises   packaged_task async

 

typedef std::tuple test_tuple;// 元组

std::get<3>(proof) = " Beautiful!";  // 修改元组的第四个元素

 

正则表达式

 

unique_ptr 可以存放在 C++11 提出的那些需要移动语义的容器之中//通用智能指针

 

std::uniform_int_distribution distribution(0, 99); // 建立分布,以离散均匀分布方式在0到99之间产生随机数
std::mt19937 engine; // 建立随机数生成引擎
auto generator = std::bind(distribution, engine); // 利用 bind 随机数生成引擎和分布組合成一个随机数生成器
int random = generator();  // 产生随机数

 

封装引用std::ref

 

std::is_integral::value && std::is_floating_point::value用于元编程的类型特征

 

typename std::result_of::type用于计算函数对象返回类型的统一方法

你可能感兴趣的:(c++)