1, __func__ 宏: 仍然用 __FUNCTION__,可用于来初始化成员列表
2, //cout << __STDC_HOSTED__ << endl; // 支持
//cout << __STDC__ << endl; // 不支持 // 依赖编译器
//cout << __STDC_VERSION__ << endl; // 不支持 // 依赖编译器
//cout << __STDC_ISO_10646__ << endl; // 不支持 // 依赖编译器
3,_Pragma : 仍然用 #pragma,也不能用在宏中,大概这个特性没什么实质性的进步?
4,__VA_ARGS__: 支持
5, long long关键字: 支持 -- limits.h的宏 %lld - 有符号,%llu - 无符号
6, assert - ―_ASSERT
NDEBUG - _DEBUG
static_assert - VS2013 直接支持,gcc4.9.2 ??难道我装的有问题?
g++编译的姿势不对: g++ -std=c++11 -o XX.cpp
7,noexcept -- vs的 _NOEXCEPT-(throw()) 不确定是否与noexcept的语义一致,但编译会有警告信息。
8,****新的成员变量初始化方式。--支持
9, 新的sizeof,---不支持对成员通过::求值。
10,新的friend -- 支持
11, ***final 与 override -- 这个不错。
12,***函数模版的默认模板参数 -- 不错。
13,显式实例化模板与外部模板的声明-- 效率优化问题,不这么做不影响编译。
14,局部和匿名类型作模板实参 -- 可。
-----------------------
15,继承构造函数 -- using Base::Base;
16, 委派构造函数 -- ctor():ctorDest(){}。缺点:委托环。用途:构造模板函数
-----------------------
17, ***** 右值引用-移动语义-完美转发: && move forward<type T>
18, explicit : 显式类型转换
19, ***** 初始化列表:initializer_list<type T>;
20, 防止类型收窄: 使用列表来初始化如:int i{2.0f}; C++中唯一一种防止类型收窄的方法。
21, ***** POD类型(plain old data): 概念包括两方面的要求,一是平凡(plain)
1,平凡默认构造函数和析构。平凡就是什么例外的事都不干的构造。默认就是编译器生成的。
2,平凡的拷贝构造和移动构造。相当于 默认的/
3,平凡的拷贝赋值运算符和移动赋值运算符。
4,不包含虚函数和虚基类
std::is_trivial<type T>::value 可用来判断类型是否符合以上4点。
POD的另一个要求,标准布局
1,所有非静态成员有相同的访问权限,如都为public或 private
2,在继承时,要求A:派生类中有静态成员,且只有一个仅包含静态成员的基类。B:基类有
非静态成员,而派生类没有非静态成员。
3,类中第一个非静态成员的类型与其基类不同。struct A:B { B b; }; 这样就不行了。而这样
struct A:B { int a; B b; }; 就可以。原因是C++标准中允许派生类的第一个成员与(没有成员)的
基类共享地址。如果类的第一个成员是基类,编译器会为基类分配一个字节空间(C++标准要 求类型相同的对象必须地址不同,基类地址与成员对象地址必须不同)导致布局不同了。
4,没有虚函数和虚基类
5,所有非静态数据成员符合标准布局,那么其基类也符合标准布局。(递归定义)
判断标准布局 std::is_standard_layout<Type T>::value
符合平凡和标准布局两方面条件的被认为是POD类型:判断可用 std::is_pod<Type T>::value来判断。
22, 非受限联合体。取消对联合体对于数据成员的限制。任何非引用成员都可以。
23, 用户自定义字面量。 VS2013 没有编译成功?
24,内联名字空间。 有点乱,没有认真看,感觉不是很有意义。
25, SFINAE。
=================================
26, 右尖扩号的变化,这个简直不能叫做改进。
27,***** auto - 类型推导。auto注意精度问题。 4种情况非法,1,作为函数参数,2,非静态成员变量,3,auto数组,4,模板参数。
28,*****decltype-类型推导,与auto有类似,注意其区别。
类型推导的规则:a,e是没带扩号的表达式。不能使重载的函数。b,e是将亡值,decltype(e) =T&&。c,e是左值,decltype(e)=T&。d,decltype(e)=T。
29,追踪返回类型。两种写法都可以。
30,for循环。for(Typename t:array)
31,强类型枚举。enum class Type : type 。强作用域,转换限制,类型指定。
32,堆内存管理:unique_ptr<> share_ptr<> weak_ptr<>, 垃圾回收????
33,*****常量表达式constexpr:常量表达式函数-单一return返回值,返回语句为常量表达式等等。自定义类型用作常量表达式,定义常量表达式构造函数。约束颇多。constexpr元编程。 (VS2013 并不支持)
34,****变长模板。
35,****原子操作与原子变量。
36, *****nullptr. 指针空值,关键字。指针空值类型:nullptr_t
37,