Template表达式中的空格
nullptr
标准库允许使用nullptr****取代0或者NULL来对指针赋值。
-
nullptr 是个新关键字
-
nullptr 可以被自动转换为各种 pointer 类型,但不会被转换为任何整数类型,
-
nullptr的类型为std::nullptr_t,定义于头文件 cstddef中.
#include <iostream>
using namespace std;
void f(int)
{
cout<<"NUll"<<endl;
}
void f(void*)
{
cout<<"nullptr"<<endl;
}
int main()
{
f(NULL);
f(nullptr);
return 0;
}
经过实际运行,当两个函数都存在时,会产生二义性,编译报错
void f(void*)
{
cout<<"nullptr"<<endl;
}
f(0); // 调用 f(int).
f(NULL); // 如果定义NULL为0,则调用 f(int),否则调用 f(void *).
f(nullptr); // 调用 f(void *).
自动推导类型auto
1)C++11 auto可以进行自动类型推导。
-
C语言默认的局部变量是auto类型的
-
C++11 auto可以进行自动类型推导
(2)使用auto的场景:类型太长或者类型太复杂
vector<string> v;
vector<string>::iterator p = v.begin() //类型太长+类型太复杂
auto p = v.begin();
eg2:
auto i = [](int x){...};
lamda表达式: 没有函数名的函数