constexpr :会在编译期计算出来 lambda: 是98、03版带有operator()的局部仿函数 当创建lambda函数的时候,编译器内部会生成这样一个仿函数,并从其你作用域中取得参数传递给lambda函数 ############################################################################################# __func__ :只能在函数内部使用,参数不行 #pragma once = _Pragma("once") 区别是,一个是宏,一个是操作符(预编译期也可使用) #define PR(...) printf(__VA_ARGS__) __LINE__,__FILE__只在宏函数中起作用,在普通函数中不起作用 __cplusplus 宏已定义成一个具体数字,比如:201103L long long : printf 时 lld llu 编译期:static_assert() noexcept() 默认noexcept(true),没有声明noexcept的函数,都是默认声明noexcept(true) 的 成员在定义时就初始化,相当于加在构造函数退出前初始化 sizeof 可以计算类的非静态成员了 friend 可以省去class关键字,也可以应用于被 typedef 过的别名了,也可以应用于模板参数 final:使用virtual接口无法子类重写 override 是必须重写 模板默认参数: template<typename T = int > class Test{}; 函数模板默认参数的位置不受限制,模板类默认参数参照函数的默认参数的规则 外部模板:作用参考extern 一个变量,用法也一样,即声明到一个头文件中 extern template void test<int>(); ############################################################################################# 类继承时,子类想使用可以using ,这种做法叫透传,透传也可以用在子类的构造函数上,而且只用一个using就可以 透传多个重载的构造函数 构造函数可能调用其他重载的构造函数:这种做法叫委派,这时的委派构造函数就相当于一个普通函数 test(int i) try:m_i(i) { } catch(...) {} 右值:不可取地址,不可赋值 改变生存期 移动 转发:引用折叠(有规则) 在类方面,多了移动构造函数和移动赋值函数 {}初始化一切都可以了 POD:兼容C, bool operator ""_C() inline namespace using 模板别名:using aa=vector<int> ############################################################################################# 改进> auto decltype 使用于范型,decltype有推导规则 decltype 会使const 或 valotile 失效 追踪函数的返回类型:->type for(auto e:...) /// 不修改元素内容 for(auto& e:...) /// 修改元素内容 for(const auto& e:...) gcc 编译也没错 ############################################################################################# enum class Type{}:强类型枚举值(不允许隐匿转换) delete [] nullptr:ok unique_ptr,shared_ptr参见参考右值特性来使用,weak_ptr,只有引用但没有计数,与shared_ptr合用 ############################################################################################# 编译时常量:constexpr 变长模板: template <typename ... element> class tuple; element:模板参数包 实现:递归继承(模板类继承),有三个步骤 1,普通变长模板声明 2,递归定义 3,递归结束: template<> 已定义的模板类名字 { 用于继承的数据成员 } 变长模板函数的话,内部也要递归实现 sizeof...(),计算变长参数个数 多线程 cstdlib:atexit (C的退出注册函数) c++11,at_quick_exit,at_exit ############################################################################################# 默认函数操作符 operator, operator& operator&& operator* operator-> operator->* operator new operator delete 声明了构造函数,导致非POD =default =deleted lambda: // 默认是一个const 函数 []()mutable->return-type {} [var] [=] [&var] [&] by_ref_lambda ref; by_val_lambda const; alignof,alginas
原文地址:http://hakuyo.blog.51cto.com/6207832/1766681