为了面试,冲冲冲!!!
1. nullptr
之前的编译器将NULL与0视为一种,那么对于一些函数
void foo(char * );
void foo(int);
调用foo(NULL)可能会调用foo(int),这会导致重载发生混乱。
为了区分空指针与0,引入nullptr。 nullptr可以隐式转化为任何指针类型。
2. 类型推导
auto
引入auto
与 decltype
实现类型推导。
auto itr = vec.begin();
auto i = 5;// int
auto arr = new auto (10); // int *
注意:不能用于函数传参,以及 推导数组类型 也不能推导函数返回类型
decltype
auto只能对变量进行类型推导,decltype对表达式进行类型推导
auto x = 1;
auto y = 1;
decltype(x,y) z;
结合用法
拖尾返回类型,指定模板函数的返回类型
template<typename T, typename u>
auto add(T x, U y) -> decltype(x,y)
{
return x+y;
}