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 <typename Second>模板的别名
using TypedefName = SomeType<OtherType, Second, 5>;

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

 

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

 

template<typename... Values> class tuple;可变参数模板

std::forward<Args>(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<class T> 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 <int, double, long &, const char *> test_tuple;// 元组

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

 

<regex>正则表达式

 

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

 

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

 

封装引用std::ref

 

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

 

typename std::result_of<Obj(Arg)>::type用于计算函数对象返回类型的统一方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值