新特性
- auto关键字,编译器根据上下文情况确定auto的真正类型
- decltype ,有点类似于auto的反函数,能够获取变量类型 int a=1; decltype(a) b=a;
- nullptr ,空指针,为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0
void F(int a){
cout<<a<<endl;
}
void F(int *p){
assert(p!=NULL);
cout<<*p<<endl;
}
int main(){
int *p=nullptr;
int *q=NULL;
bool equal=(p==q);
int a=nullptr;
F(0);
F(nullptr);
}
- 序列for循环,可以用来遍历数组和容器、string。
map<string,int> m{
{
"a",1},{
"b",2},{
"c",3}};
for (auto p :m){
cout<<p.first<<":"<<p.second<<endl;
}
- lambda
c11中引入的新技术,所有lambda的表达式都可以用更复杂的代码来表示,因此可以说是一种语法糖。
auto basicLambda = [] {
cout << "Hello, world!" << endl; };
basicLambda();
auto add = [](int a, int b) -> int {