auto
用于自动类型推断,显示定义变量:
typeid
typeid推导出来的是字符串,只能看不能用,通过打印来查看变量的类型,用法如上。
decltype
同样是用来自动推导类型,与auto的区别是,auto在定义时必须赋值,它需要通过等号右端的常量或者变量来推到类型,如果你只想定义一个变量不希望赋值,就用decltype:
nulllptr
为了补NULL的坑。早版本NULL被定义成了字面常量0,但我们期望它的涵义是地址为0的一个指针:
C++11用nullptr来表示空指针。
工程实践中如果NULL被识别成常量0会有bug,比如:
void func(int p)
{cout << "int p" << endl;return;
}
void func(int* p)
{cout << "int* p" << endl;return;
}
int main()
{func(NULL);return 0;
}
我们期望它调用func(int*),但是调用了另一个。
C++11中的简化声明补齐了C++在类型推导方面的短板。